首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

linux下编译后文件有部分代码没编译进去,该怎么解决

2012-05-16 
linux下编译后文件有部分代码没编译进去a文件是编译好的so里面的一个文件b是链接a后编译生成的可执行文件,

linux下编译后文件有部分代码没编译进去
a文件是编译好的so里面的一个文件
b是链接a后编译生成的可执行文件,里面调用了a的F函数

linux下gdb调试b,执行到a文件的F时,F里面的一句打印没执行出来
执行l命令,发现没有该打印语句的代码

我退出GDB,cat a文件,发现里面有那句打印的代码,郁闷,
我又执行了一次make clean 操作,确定清理掉了原来的a 和工程的可执行文件b
再make后确定生成了新so a和可执行文件b
然后重新GDB调试,发现执行到F时打印还是没有,l查看,那个打印的
代码还是没有编译进来


有哥们碰到过这种问题么?求支持



[解决办法]
objdump
[解决办法]
动态库以 CFLGAS=-g 编译
调试时gdb中dir 动态库源码目录
然后下断点。

另外可能是你的某些宏导致代码没有被编译进来

在so中打印的前一行加上assert(0); -g编译
运行调用打印所在函数,如果不挂,那就是代码没有编译进去。

热点排行