1

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

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

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

我无法想象我是唯一面临这个问题的人。该软件由数十名员工同时使用,因此可以联系他们并让他们运行应用程序,或者在运行其他应用程序或其他应用程序没有解决之前不要单击该对话框上的关闭。

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

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

感谢您的任何建议!

4

1 回答 1

1

您可以选择自动解决方案。我相信您可以使用多种选择来检测您是否被挂起。

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

于 2008-12-11T09:01:35.977 回答