gdb没有找到任何调试符号

时间:2017-07-14 11:39:21

标签: linux ubuntu debugging gcc gdb

我编译了一个C ++程序,现在想用gdb调试它。 gcc的版本为gcc (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5,而gdb是GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1,因此this在我的案例中似乎不是问题。

启动像$ gdb --args ./my_program /path/to/a/file这样的gdb有效,但它会产生以下消息:

Reading symbols from ./my_program...(no debugging symbols found)...done.

我仍然可以使用run运行程序,但任何需要调试符号的内容都会失败,例如在行上设置断点,或使用i linei locals

正如this answer中所建议的那样,我运行了$ objdump --debugging ./my_program,输出填充了几千行,因此我确信调试符号确实可用。

还有this question,但它似乎与共享库更相关。在gdb中运行info sharedlibrary表示那些在我的情况下没有调试信息,但我认为我不需要担心这一点。

(gdb) info sharedlibrary
From                To                  Syms Read   Shared Object Library
0x00007ffff7ddab00  0x00007ffff7df5660  Yes         /lib64/ld-linux-x86-64.so.2
0x00007ffff74f1250  0x00007ffff74f1dc3  Yes (*)     /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0
0x00007ffff72e0a80  0x00007ffff72eb5e0  Yes (*)     /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.54.0
0x00007ffff70a5810  0x00007ffff70b6a43  Yes (*)     /usr/lib/x86_64-linux-gnu/libexif.so.12
[...]
(*): Shared library is missing debugging information.

正如评论中所建议的,我还检查了剥离:

$ file ./my_program
./shore_evaluate: ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.24,
BuildID[sha1]=aa85fb21d388828eced5bd0be4202a50bbba1b90, not stripped

如何让GDB找到调试符号?

0 个答案:

没有答案