gdb调试共享库<optimized out =“”> issue </optimized>

时间:2012-02-21 10:35:09

标签: c gdb

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

  

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

只有在调试优化代码时才能显示<optimized out>

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

在Linux(以及许多其他UNIX系统)上,您可以向链接行添加-Wl,-t标记,并查看链接时实际使用的库。

使用共享库时,GDB info shared命令将告诉您在运行时选择哪个库。