【问题标题】:gdb: Program exited with code 030000000375gdb:程序退出,代码为 030000000375
【发布时间】:2012-07-07 14:06:12
【问题描述】:

我正在自学使用 gdb 并且正在运行一些随机测试。值得一提的是,我在 Windows 7 x64 上使用便携式 MinGW 安装。我创建了一个我知道会导致堆栈溢出的程序,当我在 gdb 中运行它时,我首先得到两个 SIGSEGV 信号(毫不奇怪),然后它以代码 030000000375 退出(同样毫不奇怪)。

Program received signal SIGSEGV, Segmentation fault.
Program received signal SIGSEGV, Segmentation fault.
Program exited with code 030000000375.

好奇心占了上风……那代码到底是什么?我用谷歌搜索了一下,发现很少。

谢谢!

更新:作为参考,我在 Ubuntu 上尝试了相同的程序,结果略有不同:

Program received signal SIGSEGV, Segmentation fault.
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.

【问题讨论】:

  • 你总是得到相同的代码吗?如果是这样,您是否尝试过更改程序的数据并查看是否仍然得到相同的代码?

标签: c gdb mingw stack-overflow segmentation-fault


【解决方案1】:

gdb 以八进制格式打印出退出代码。不明显,但由前导 0 指示。

所以030000000375 是十六进制的0xC00000FD,这使得代码对于 Windows 程序员来说看起来更常见。

0xC00000FDSTATUS_STACK_OVERFLOW,应该在ntstatus.h 中定义。

【讨论】:

  • 很好的发现,谢谢!非常有趣的是,当你遇到堆栈溢出时,Windows 会告诉你,而 linux 不会。
  • 不客气!顺便说一句:也许您应该将此问题的主题修改为“gdb: Program exited with code 030000000375”,因为它不是gdb 退出此代码。 @The111
  • 完成。为了回答你在 cmets 中的另一个问题,我使用的测试程序是我很久以前在这篇文章中提出的,我无意中自学了堆栈溢出的存在:stackoverflow.com/questions/8611198/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多