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

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编译
运行调用打印所在函数,如果不挂,那就是代码没有编译进去。