【发布时间】:2011-01-16 22:32:12
【问题描述】:
我有一些代码,我目前正在从 OS X 移植到 Linux(控制台工具)。
在这段代码的某个地方,我遇到了分段错误。问题是,如果我在没有 GDB 的情况下运行程序,我清楚地看到了分段错误,程序被杀死了。但是当我运行 GDB 时它会停止,并且 GDB 永远不会返回到提示符。所以我真的无法检查发生了什么。
C++ 是代码。使用 g++ 中的 -g 选项编译。
顺便说一句。对 GDB 来说很新,如果这很明显,请原谅。
有什么想法吗? 提前致谢。
特伦斯科
【问题讨论】:
-
如果在它“挂起”时按 Ctrl-C 会发生什么?这应该将控制权交还给 GDB。
-
很抱歉,这似乎是一个愚蠢的建议,但您是否真的退出了 gdb(通常使用 'quit')?它会暂停,以便您可以在实际发生分段错误时检查堆栈的状态,以找出导致它的原因。
-
您可以尝试在 valgrind 下运行您的程序——它通常会在 gdb 注意到错误之前发现错误(当然,以运行程序比正常速度慢 10 倍为代价)
-
CTRL+C 不做任何事情。它只是在分段错误之后挂起。没有 GDB 提示,没有 bash 提示。没什么。摆脱它的唯一方法是打开另一个控制台窗口,然后杀死 gdb,这让我回到 bash。
标签: c++ c debugging gdb segmentation-fault