GDB 关于符号的问题

gdb questions regarding symbols

本文关键字:问题 符号 于符号 GDB      更新时间:2023-10-16

我是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 启动时尝试了 (gdb( 符号文件/usr/lib/debug/lib/x86_64-linux-gnu/ld-2.13.so 它没有帮助。

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

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

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

请参阅:GDB 无法显示堆栈并显示"#1 0x0000000000000000在 ??((">