【问题标题】:How can I make Visual Studio break just before program stops?如何在程序停止之前让 Visual Studio 中断?
【发布时间】:2016-12-06 16:57:43
【问题描述】:

好的,我得到了我尝试在 Visual Studio 2008 中调试的这个多线程 C++ 程序。

有时(通常在计算一到两个小时之间的随机时间之后),程序停止,在调试窗口中写入后退出调试模式:

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 我想要休息一下?

【问题讨论】:

  • 我有其中之一,但在发布模式下无法弄清楚。在调试模式下运行时,附加了调试器,结果只是一个简单的空指针取消引用,但不知何故,当没有附加调试器时,它被报告为异常。

标签: visual-studio debugging


【解决方案1】:

我的猜测:您遇到了断言失败,CRT 无法创建消息窗口(出于某种原因)。这会导致一个 exit(3) 调用。我不确定这是否会使用该退出代码杀死所有线程。一旦出现问题,也许你所有的线程都会以同样的方式失败。

尝试在程序开头添加_CrtSetReportMode 调用以强制断言失败消息到调试器的输出窗口。然后,您应该会在一系列线程退出消息之前的调试输出窗口中看到断言失败的详细信息。

【讨论】:

  • 看来你是对的,一个断言在不同的线程中被击中。我终于摆脱了这个错误,谢谢:)
猜你喜欢
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多