C - GDB 调试共享库<优化>问题



我正在尝试使用gdb调试共享库

当进入共享库中的函数时,我已经开始为所有局部变量(用C编写)获取<optimized out>

我尝试过链接到共享库(.so)链接到静态库(.a),以确保Makefiles中没有设置优化,即为库和库线束都设置了-O0和-g

奇怪的是,我之前能够调试它,<optimized out>最近才出现,但我不知道为什么,例如,我能够看到最初的局部变量

我知道这是一个模糊的问题,我可能需要提供各种进一步的信息来进行排序,例如Makefile、源代码等,但可能有人从这个高级描述中认识到了问题,并可以提供潜在的解决方案?

最近才出现,但我不知道为什么

<optimized out>只能在调试优化代码时出现。

由于您已经验证了编译行中不存在-O*标志(不要只查看Makefile,检查实际的编译日志),因此合乎逻辑的结论是,有人在系统的其他地方安装了您库的不同(优化)版本,并且您正在链接到版本。

在Linux(和许多其他UNIX系统)上,您可以将-Wl,-t标志添加到链接行,并查看链接时实际使用的是哪个库。

当使用共享库时,GDBinfo shared命令将告诉您在运行时拾取哪个库。

最新更新