繁体   English   中英

分段错误后GDB不返回

[英]GDB doesn't return after segmentation fault

我有一些代码,目前正在从OS X移植到Linux(控制台工具)。

在这段代码的某个地方,我遇到了分段错误。 问题是,如果我在没有GDB的情况下运行该程序,我会清楚地看到分段错误,并且该程序将被杀死。 但是,当我运行GDB时,它只是停止了,而GDB从不返回提示。 因此,我真的无法检查发生了什么。

C ++是代码。 与g ++中的-g选项一起编译。

顺便说一句。 对GDB来说还很陌生,如果这很明显,请原谅。

有任何想法吗? 提前致谢。

特伦斯科

收到seg错误信号时,gdb将暂停您的程序

键入where看到堆栈跟踪,并开始检查什么从那里上。

还可以考虑启用核心转储,这样您就可以在GDB中加载核心转储并调查正在发生的事情

然后您可以像这样加载核心转储

> gdb your_program the_core_dump

您描述的行为不是典型的-我怀疑堆栈可能已被丢弃。

尝试直接通过“ kill”命令发送各种信号。

您可能值得在gdb中运行带有abort()的测试程序,以便了解gdb的预期行为。

在堆栈太大之前,我已经看到了这一点。 尝试将堆栈变量移动到堆上(使它们成为全局变量),重新编译,看看是否仍然收到错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM