好的,我得到了我尝试在Visual Studio 2008中调试的多线程C++程序。
有时(通常在一到两个小时的随机计算时间之后),程序停止运行,并在调试窗口中写入后退出 Debug模式:
The thread 'Win32 Thread' (0x1560) has exited with code 3 (0x3).
The thread 'Win32 Thread' (0x5fc) has exited with code 3 (0x3).
...
对于所有涉及的线程,依此类推。
AFAIK退出代码3表示发生了某种故障,我希望VS能够拦截该异常并对其进行破坏,因此我可以尝试查看是什么错误以及引起该错误的原因。
我试图在Visual Studio的“调试”菜单中激活所有捕获异常的功能,但它没有做任何更改。
有没有办法告诉VS我想在发生这种正常退出时休息一下?
最佳答案
我的猜测:您遇到断言失败,CRT无法创建消息窗口(由于某种原因)的情况。这导致一个exit(3)调用。我不确定这是否会杀死具有该退出代码的所有线程。一旦出现问题,您的所有线程都可能以相同的方式失败。
尝试在程序的开头添加_CrtSetReportMode调用,以将断言失败消息强制到调试器的输出窗口。然后,您应该在一系列线程退出消息之前的调试输出窗口中查看断言失败的详细信息。
关于visual-studio - 如何在程序停止之前使Visual Studio中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416620/