我有一些代码,我目前正在从OS X移植到Linux(控制台工具)。
在此代码的某处,我遇到了分段错误。问题是,如果我在没有GDB的情况下运行程序,我会清楚地看到分段错误,并且程序被终止。但是当我运行GDB时它就会暂停,GDB永远不会返回提示符。所以我真的无法检查发生了什么。
C ++是代码。使用g ++中的-g选项进行编译。
顺便说一下。对GDB来说很新,所以如果这很明显,请原谅。
有什么想法吗? 提前谢谢。
Trenskow
答案 0 :(得分:3)
gdb将在收到seg故障信号时暂停您的程序
键入where
以查看堆栈跟踪并开始检查从那里发生的事情。
还考虑启用核心转储,这样就可以在GDB中加载核心转储并调查正在发生的事情
然后你可以像这样加载核心转储
> gdb your_program the_core_dump
答案 1 :(得分:0)
您描述的行为并不典型 - 我怀疑堆栈可能已被删除。
尝试通过'kill'命令直接发送各种信号。
可能值得你在gdb中运行一个带有abort()的测试程序,这样你就可以了解gdb的预期行为。
答案 2 :(得分:0)
我的堆栈太大之前就已经看过了。尝试将堆栈变量移动到堆上(使它们成为全局变量),重新编译,看看是否仍然出现错误。