分段错误后GDB不返回

时间:2011-01-16 22:32:13

标签: c++ c debugging gdb segmentation-fault

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

在此代码的某处,我遇到了分段错误。问题是,如果我在没有GDB的情况下运行程序,我会清楚地看到分段错误,并且程序被终止。但是当我运行GDB时它就会暂停,GDB永远不会返回提示符。所以我真的无法检查发生了什么。

C ++是代码。使用g ++中的-g选项进行编译。

顺便说一下。对GDB来说很新,所以如果这很明显,请原谅。

有什么想法吗? 提前谢谢。

Trenskow

3 个答案:

答案 0 :(得分:3)

gdb将在收到seg故障信号时暂停您的程序

键入where以查看堆栈跟踪并开始检查从那里发生的事情。

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

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

> gdb your_program the_core_dump

答案 1 :(得分:0)

您描述的行为并不典型 - 我怀疑堆栈可能已被删除。

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

可能值得你在gdb中运行一个带有abort()的测试程序,这样你就可以了解gdb的预期行为。

答案 2 :(得分:0)

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