Windows如何检测程序是否已停止工作"?

时间:2016-01-28 06:13:25

标签: windows crash windows-error-reporting

当我点击X按钮关闭一个程序(说它是MYAPP)时,弹出一个对话框说:

  

MYAPP已停止工作

     

Windows可以在线查看问题的解决方案。"

但实际上应用程序已经退出。

错误信息:

    Problem signature:
      Problem Event Name:   APPCRASH
      Application Name: MYAPP.EXE
      Application Version:  1.0.0.0
      Application Timestamp:    56a8dfa8
      Fault Module Name:    MSVCP90D.dll
      Fault Module Version: 9.0.30729.6161
      Fault Module Timestamp:   4dace5bf
      Exception Code:   c0000005
      Exception Offset: 00007b3f
      OS Version:   6.3.9600.2.0.0.272.7
      Locale ID:    3081

Windows如何检测程序是否已停止工作"?它是否表明应用程序抛出异常或死锁?

1 个答案:

答案 0 :(得分:1)

Windows错误报告(WER)将捕获未处理的异常。它不会陷入僵局。当程序“停止工作”时弹出的那个对话框是一个WER崩溃转储(或者它与MS服务器通信以查看是否要进行崩溃转储等)。

有几种方法可以调试崩溃的程序,这些程序是经过验证的(尽管是艰巨的)。其中一些包括:

  • 使用GFlags启动Visual Studio或WinDbg
  • 在程序中包含代码以启动调试器

在这种情况下使用WER,您可以打开本地故障转储,然后,只要您拥有符号数据库(pdb)文件,就可以从本地故障转储进行调试。您可以在Collecting User-Mode Dumps处了解有关进行本地故障转储的更多信息。