首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以让GDB加载调试符号

难以让GDB加载调试符号
EN

Stack Overflow用户
提问于 2010-08-15 21:27:46
回答 2查看 9.4K关注 0票数 3

我经常使用GDB来调试C/C++程序,并且我对它的工作原理和功能相当了解。

然而,我经常会遇到一些问题,奇怪的是,我似乎不能让GDB从核心文件中正确加载符号。

目前,我在一个共享的NFS目录中有一个二进制可执行文件。该可执行文件肯定是使用-g3标志编译的。可执行文件崩溃,并将一个核心文件转储到我的Linux机器的/home目录中。

由于某些原因,我不能让GDB从core文件中加载符号。

当我尝试的时候:

代码语言:javascript
复制
$ gdb <executable_file> <core_file>

GDB加载,但我无法获得回溯,并且没有加载调试符号。

如果我运行GDB,然后在GDB提示符下输入core <core file name>,它将加载核心文件,并且我看到核心文件肯定与先前崩溃的二进制可执行文件相关联。然而,GDB报告“无法从内存中读取有效的目标文件图像”,因此我无法获得有意义的回溯,并且没有加载调试符号。

有人知道这可能是什么原因吗?通常,让GDB正确加载核心文件并读入调试符号没有问题,但在这种情况下,它不起作用。会不会是因为二进制可执行文件存储在共享的NFS挂载上?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-15 23:25:26

检查你的ulimits。这是一个相当常见的混乱来源。截断的核心文件可以使任何形式的gdb检查变得无用,在大多数情况下,您可以读取二进制文件的名称,如果核心文件至少为8k,则可以获得堆栈跟踪。

票数 5
EN

Stack Overflow用户

发布于 2010-08-16 00:43:56

是否加载了所有共享库?试一试

代码语言:javascript
复制
 $ ldd <executable_file> 

看看这能不能帮你弄清楚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3487537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档