Code slice
#define debug(fmt,...) do { \
fprintf(stderr,"[ DEBUG ] : [ %s, %d ] ",__FILE__,__LINE__); \
fprintf(stderr,fmt,##__VA_ARGS__); \
fprintf(stderr,"\n"); \
} while(0)
继续阅读 »
xmake can run and debug the given target program now.
We only need configure the debug mode to compile this target and run it.
e.g.
```lua
-- enable debug symbols
if is_mode("debug")
set_symbols("debug")
end
-- define target
target("demo")
set_kind("kind")
add_files("src/*.c")
```
And we compile and r
继续阅读 »
上一篇文章简单介绍了 Source Map,接下来我们来看看如何利用各种工具来生成 Source Map。
什么是 Source Map?
Source Map 提供了一个与语言无关的方式,来将生产环境中的代码映射回开发环境中的原始代码。
在现代的开发流程中,我们的开发环境和实际线上环境的代码通常都不一样。在应用上线部署前,我们通常都要对我们的代码进行编译、合并、压缩或者其他方面的优化,这使得我们非常困难来准确定位会原始代码。但是,在生成过程中,Source Map 文件储存了这些位置信息,因此,当我们查找一行中的某个位置时,Source Map 文件可以准确定位到原始文件中的位置。这使得我们线上环境中的代码变得可读,甚至可调
继续阅读 »
debug的关键:
最好的方法是 "治未病"-- 尽量减少自己写的程序出 bug, 在写代码前, 理解一切: 语言的 API, 项目的上下文, 各种知识以及原理. 难道有一丝不清楚的代码你敢写吗?
根据现象与已有的知识,逻辑推理出可能的问题,再进行下一步;而不是一开始就把所有现象试出来
理解问题, 有报错信息的, 一定要把报错信息一字不漏的读完, 思考为什么会出错, 想出解决办法.
而不是不管三七二十一到 Google 上搜索.
其次是, 永远保持耐心, 相信自己能解决问题
继续阅读 »
JDB
"jdb"命令
jdb是java的一个命令行debug工具,随JDK提供。语法如下:
jdb [options] main_class_name
jdb [options] -attach
* 这里"options"是指一系列的选项;
* "main_class_name"是main函数所在的类名;
* address是正在运行的JAVA进程
继续阅读 »
之前在给xmake做构建的效率优化的时候,需要对lua脚本的api调用性能进行分析,分析出最耗时一些lua调用api,
找出性能瓶颈,来针对性地进行优化,那么问题来了,如果对lua脚本像c程序那样进行profile呢?
我们现在看下最后实现完的最终效果:
4.681, 98.84%, 1, anonymous : actions/build/main.lua: 36
3.314, 69.98%, 1, anonymous : actions/build/main.lua: 66
3.314, 69.98%,
继续阅读 »
环境准备
说明:本文章使用的ES版本是:6.7.0
JDK
Elastisearch 6.7.0编译需要JDK版本10.0及以上,我直接安装了JDK12.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
继续阅读 »
之前xmake默认编译windows目标,debug模式下采用的是-Z7编译选项,内置的调试符号信息到obj文件里面
但是这种方式按msdn的文档上说,是属于旧式的调试符号文件格式,所以为了考虑后续的兼容性,xmake修改了默认的调试符号生成规则,
改为默认启用pdb符号文件,并且pdb的方式更为常用。。
这个行为的修改,并不会影响到xmake.lua的设置,如果在这个文件中,设置了启用调试符号:
lua
set_symbols("debug")
那么,编译debug版本的目标时,就会自动生成pdb文件,以tbox为例:
bash
$ xmake f -m debug
$ xmake
编译完成后,会自动在build
继续阅读 »
xmake默认情况下是不会去生成pdb文件,就算是debug编译,启用了调试符号:
lua
set_symbols("debug")
也是不会生成额外的pdb文件,它会把所有调试符号内置到程序里面,如果要独立生成pdb文件,可以对xmake.lua进行如下修改:
```lua
-- 先禁用内置的调试符号开关
--set_symbols("debug")
-- 静态库目标
target("test")
set_kind("static")
-- 仅针对windows平台
if is_plat("windows") then
-- 启用pdb生成
add_cxflags("-ZI", "-Fd$(bui
继续阅读 »
现在xmake在windows下,也已经支持调试运行了,可以在编译完debug版本的程序后,直接进行调试开发。。
我们继续以tbox工程为例:
bash
$ xmake f -m debug
$ xmake r -d demo
上述命令,先配置了debug模式编译,为了启用pdb调试符号文件的生成,然后自动编译后,调试运行demo程序。。
xmake会在配置的时候,自动检测windows上注册表里面的默认调试器,然后加载我们的目标程序并运行。
一般情况下,加载的是vs自带的vsjitdebugger调试器,当然xmake也支持windbg和ollydbg(做逆向的,这个用的比较多哈。。)
我们试着运行demo中的exc
继续阅读 »