我正在教自己使用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.
好奇心让我最好......那个代码到底是什么?我用Google搜索并发现很少。
谢谢!
更新:作为参考,我在Ubuntu上尝试了相同的程序,结果略有不同:
Program received signal SIGSEGV, Segmentation fault.
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
答案 0 :(得分:11)
gdb
以八进制格式输出退出代码。不明显,但由前导0
表示。
所以030000000375
是0xC00000FD
的十六进制,这使得代码看起来更常见于Windows程序员。
0xC00000FD
为STATUS_STACK_OVERFLOW
,应在ntstatus.h
中定义。