C gdb:程序已退出,代码为030000000375
我正在教自己使用gdb,并且正在运行一些随机测试。值得一提的是,我正在Windows 7 x64上使用便携式MinGW安装。我创建了一个程序,我知道它会导致堆栈溢出,当我在gdb中运行它时,我首先得到两个SIGSEGV信号(毫不奇怪),然后它退出(也毫不奇怪),代码为030000000375C 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
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号完成。为了回答评论中的另一个问题,我使用的测试程序是我很久以前在这篇文章中提出的,我无意中自学了堆栈溢出的存在: