日期:2014-05-16  浏览次数:20358 次

记录通过eclipse CDT调试beansdb

1. 安装CDT

可以选择更新,update目录中一般会有当前使用的版本更新,比如我现在的是:

Indigo - http://download.eclipse.org/releases/indigo

?

选择里面的Programming Languages ,然后点开,勾选cdt

?

2.导入beansdb代码

基本上就是c/c++? Executabl类型的,即可

?

3. 选中project点击build。这时候会编译

?

4. 编译之后就可以debug了。

?

注意:

gdb调试程序的时候打印变量值会出现<value optimized out> 情况,可以在gcc编译的时候加上 -O0参数项,意思是不进行编译优化,调试的时候就会顺畅了,运行流程不会跳来跳去的。

?

怎么修改呢?找到/beansdb-0.5.3/Makefile。

CFLAGS = -g -O2

修改成

CFLAGS = -g -O0

?

?

gcc优化选项:
-O0/1/2/3/s?????????????? 介绍如下:
-O0????????????????? 不进行优化处理。
-O/O1 GCC将执行减少代码尺寸和执行时间的优化,对于那些会严重影响编译时间的优化选项,这个级别的优化并不会执行。
-O2????????????????? 在这一级别GCC将会提供所有支持的优化,但这其中并不包括以空间换时间的优化手段,例如编译器不会使用循环展开和函数内联。和-O相比,该选项进一步加快了编译时间和生成代码的性能。
-O3????????????????? 除了-O2提供的优化选项外,还指定了-finline-functions,-funswitch-loops和-fgcse-afer-reload 选项,目的只有一个就是全力执行代码优化,但是用"-O3 -fno-inline-functions"既可以使用-O3的功能又关闭函数内嵌功能。
-Os????????????????? 这个选项是专门用来优化代码尺寸的,-Os打开了所有-O2级别中不会显著增长代码尺寸的优化选项 在用GDB调试优化后的程序时,运行时的指令和你所编写指令就有不一样,也就会出现你所想象不到的结果。对付这种情况时,需要在编译程序时关闭编译优化。   

?

?

?