从挂起的应用程序保留Windows错误报告转储

时间:2008-12-10 22:27:28

标签: debugging windows-server-2003 dump hang windows-error-reporting

应用程序偶尔会挂起,我想在当时看到转储来解决它。我编写了一个应用程序,用户可以运行该应用程序来自动创建我可以查看的转储。但是,无论我尝试什么,我似乎无法让用户记住在它挂起时运行它。他们总是关闭程序,调用Windows错误报告。

WER将在临时目录中创建转储,但不幸的是,只要关闭向Microsoft发送信息的对话框,它们就会被删除。

成为ISV并从Microsoft的错误报告服务器获取此信息是一种解决方案......但目前还不是现实的。

我无法想象我是唯一一个面临这个问题的人。该软件由数十名工作人员同时使用,因此可以使用这些软件并让他们运行应用程序,或者不在该对话框上单击关闭,直到运行其他应用程序或其他应用程序尚未运行。

该应用程序在Windows Server 2003上运行。太糟糕了,因为我知道Server 2008有一些LocalDumps选项可以让我保留它们。

任何想法以某种方式保留这些转储所以我可以分析它们?障碍是用户,从某种意义上说,我已经接受了他们的固执,并且不希望他们运行任何其他应用程序或做任何特别的事情。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:1)

您可以选择自动解决方案。我相信你有多种方法可以检测你是否挂了。

可以从app中的一个单独线程使用SendMessageTimeout(也注意SMTO_ABORTIFHUNG作为fuFlags值之一)。一旦确定主线程没有响应,就可以在任何地方保存转储文件。 自w2k起还有一个IsHungAppWindow()(user32.dll)。