【问题标题】:gdb doesn't show symbol from a shared library when another library has the same symbol当另一个库具有相同的符号时,gdb 不显示来自共享库的符号
【发布时间】:2019-08-04 00:25:18
【问题描述】:

我正在调试一个与两个共享库(liba.so 和 libb.so)链接的 Linux 程序。每个库在同一文件“main.cpp”中都有相同的符号“Journal”。gdb 仅从其中一个库中查找并打印符号。 如何从另一个库中查找和打印符号? 如何打印特定共享库中的所有符号?

(gdb)info var Journal
File ../main.cpp:

SJournalEntry Journal[64];

(gdb) info address Journal

Symbol "Journal" is static storage at address 0x7ffff7febee0.

(gdb) info symbol 0x7ffff7febee0

Journal in section .bss of /usr/lib/liba.so

但这里有另一个符号:

(gdb) info symbol 0x7ffff7dc7070

Journal in section .bss of /usr/lib/libb.so

【问题讨论】:

    标签: linux gdb shared-libraries debug-symbols


    【解决方案1】:

    gdb 仅从其中一个库中查找并打印符号。

    您可能正在查看this bug。

    如何从另一个库中查找和打印符号?

    我认为你不能(没有运行 nm libb.so 并手动将符号重新定位到 libb.so 加载地址)。

    注意:在正常的符号解析规则下,假设符号是全局的,所有对 Journal 的引用都将绑定到同一个符号,因此该符号也存在于另一个库中这一事实是无关紧要的。

    如何打印特定共享库中的所有符号?

    我不相信 GDB 有办法做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多