C++ 程序在任何事情发生之前在调试器中崩溃

C++ 程序在任何事情发生之前在调试器中崩溃,c++,debugging,qt,C++,Debugging,Qt,我正在使用MinGW工具链为windowsxp构建一个应用程序,它有时会意外崩溃。所以,我试图使用一个调试器(Gdb),但是程序在任何事情发生之前以代码03退出。事实上,我从GDB看到的是: [新螺纹3184.0x7b8][新螺纹 3184.0xef8] 程序已退出,代码为03 我怀疑依赖项的动态链接(Qt、VTK和ITK,都是用MinGW构建的)失败了。但是,如果我只是正常运行程序,就不会发生这种情况。或者,如果发生这种情况,则在程序启动并运行后,它似乎是间歇性的,并且运行良好。注意:我还使用

我正在使用MinGW工具链为windowsxp构建一个应用程序,它有时会意外崩溃。所以,我试图使用一个调试器(Gdb),但是程序在任何事情发生之前以代码03退出。事实上,我从GDB看到的是:

[新螺纹3184.0x7b8]
[新螺纹 3184.0xef8]

程序已退出,代码为03

我怀疑依赖项的动态链接(Qt、VTK和ITK,都是用MinGW构建的)失败了。但是,如果我只是正常运行程序,就不会发生这种情况。或者,如果发生这种情况,则在程序启动并运行后,它似乎是间歇性的,并且运行良好。注意:我还使用Cmake进行交叉编译


我该怎么办?我可以尝试什么?

代码3通常在segfault上返回。
尝试切换到Linux并用electric fence调试程序。它可能会给您一些额外的见解。

通过
信号(SIGABRT,)
添加回调,以便在进程关闭之前捕获中止调用。如果在你点击
main()
之前发生这种情况,你可能不得不求助于静态全局和编译器技巧来捕捉它。

谢谢你的建议,但是崩溃除了在Windows中不会发生。是的。当我们的assert宏被重新路由到中定义的宏时,我必须弄清楚这一点。太棒了。很酷的东西,谢谢你的好主意,@MSN,我需要自己试试:)如果已经在GDB中,你也可以尝试设置一些断点:
catch-throw
,和
b-raise
,然后用任何参数运行你的程序。当引发异常或调用信号时,这应该中断。