Windows如何检测程序是否“停止工作”?
问题描述:
当我按下X键关闭程序(说它是MYAPP),一个对话框弹出说:Windows如何检测程序是否“停止工作”?
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如何检测程序是否“停止工作”?它是否表示应用程序会引发异常或死锁?
答
Windows错误报告(WER)将捕获未处理的异常。它不会陷入僵局。程序“停止工作”时弹出的对话框是WER崩溃转储(或与MS服务器通信以查看是否要执行崩溃转储等)。
调试崩溃程序的方法有几种,尝试过并且是真的(尽管很艰难)。其中一些包括:
- 使用GFlags推出Visual Studio或WinDbg的
- 包括在程序代码中启动调试程序
在这种情况下,与WER,你可以打开本地崩溃转储,然后,只要具有符号数据库(pdb)文件,就可以从本地故障转储进行调试。您可以阅读更多关于在Collecting User-Mode Dumps处进行本地故障转储的信息。
那么,在这种特殊情况下,原因很简单:异常0xc0000005,这是一个内存访问冲突。 –
@HarryJohnston有没有办法让程序在内存访问冲突点中断并启动Visual Studio? – Deqing
如果安装了Visual Studio,Windows通常会提供调试程序。但是,如果由于某种原因无法正常工作,则可以在Visual Studio调试器中明确运行它。 –