c++ - gdb 关于符号的问题

标签 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编译的。

最佳答案

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

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

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

关于c++ - gdb 关于符号的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694252/

相关文章:

c++ - GLSL 错误 : Undefined layout buffer variable in compute shader, 虽然已定义

c++ - 是否有 std::memset 等同于 std::array?

c++ - 为什么使用 for_each 是错误的?

c++ - 如何截断 GDB 的反汇编命令显示的损坏的 C++ 标识符?

c - 使用 GDB 打印/观察大型代码库文件中的变量?

c++ - 将字符串放入指定的矩形内

c++ - Netbeans C++ 中的调试无法启动 - OSX Yosemite -

C++:具有自定义结构的文本字段以支持数学或任何其他形式

c++ - 未解析的外部符号 C++

c++ - "<<"和 ">>"运算符的名称是什么?