C gdb:程序已退出,代码为030000000375

C gdb:程序已退出,代码为030000000375,c,gdb,mingw,stack-overflow,segmentation-fault,C,Gdb,Mingw,Stack Overflow,Segmentation Fault,我正在教自己使用gdb,并且正在运行一些随机测试。值得一提的是,我正在Windows 7 x64上使用便携式MinGW安装。我创建了一个程序,我知道它会导致堆栈溢出,当我在gdb中运行它时,我首先得到两个SIGSEGV信号(毫不奇怪),然后它退出(也毫不奇怪),代码为030000000375 Program received signal SIGSEGV, Segmentation fault. Program received signal SIGSEGV, Segmentation faul

我正在教自己使用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.

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

因此,
030000000375
是十六进制的
0xc0000fd
,这使得代码对于windows程序员来说更为常见


0xc0000fd
状态\u堆栈\u溢出
并且应该在
ntstatus.h

中定义,您总是得到相同的代码吗?如果是这样,您是否尝试过更改程序的数据并查看是否仍然得到相同的代码?很好的发现,谢谢!非常有趣的是,当你遇到堆栈溢出时,Windows会告诉你,但linux不会。欢迎你!顺便说一句:也许你应该将这个问题的主题修改为“gdb:程序退出代码030000000375”,因为它不是
gdb
退出代码@11号完成。为了回答评论中的另一个问题,我使用的测试程序是我很久以前在这篇文章中提出的,我无意中自学了堆栈溢出的存在: