关于符号的gdb问题

时间:2012-05-22 00:15:53

标签: c++ gdb symbols

我是gdb的新手。当我调试我的程序时,我只会得到如下的回溯。

Program received signal SIGSEGV, Segmentation fault.
0x000000003075a238 in ?? ()
(gdb) backtrace
#0  0x000000003075a238 in ?? ()
#1  0x00007fff72825da8 in ?? ()
#2  0x0000000000000008 in ?? ()
#3  0x000000003063c340 in ?? ()
#4  0x0000000000000000 in ?? ()
(gdb) 

我猜有一些符号信息缺失。我收到此消息

Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found).

所以我尝试了(gdb)symbol-file /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.13.so在启动gdb时它没有帮助。

我如何知道缺少哪个符号信息?整个项目的代码用gcc -g编译。

1 个答案:

答案 0 :(得分:0)

静态编译应用程序时会发生此问题(gcc中为-static)。在这种情况下,构建机器的库可能与执行机器的库不同,gdb无法找到构建机器库的符号。

我遇到了这个问题,唯一对我有用的解决方案是在同一台机器上构建应用程序。

请参阅:GDB cannot show the stack and shows "#1 0x0000000000000000 in ?? ()"