1

第一次设置 WinQual 和 WER 后,我故意在发布版本中插入了一个崩溃,期望\希望获得 WER 对话,但仍然得到包含“运行时错误!应用程序已请求运行时以异常终止的对话方法...”。

关于 WinQual 的设置,一切似乎都正常工作(以及所有支持的符号服务器、源服务器、WinQual 帐户、提交的映射文件并验证了它们在我的 WinQual 帐户中的存在)。现在我想验证转储文件是否已创建并提交给 WinQual,我可以检索它们进行调试。

我确认我的 PC (XP Pro SP3) 错误报告已启用(系统属性-错误报告)。我认为困难的部分是设置所有内容,而不是让程序实际显示 WER 对话。需要对exe或PC进行一些修改吗?

4

3 回答 3

1

很高兴知道我可能没有(完全)疯了。你说得对,外部问题导致 WER 对话出现问题。

我将崩溃更改为上面的代码,以防万一我的版本太残酷,并在三台机器上运行应用程序,似乎在 XP 和 Win7 上存在 Visual Studio 和/或即时调试是影响 WER 对话。对于任何感兴趣的人,这就是我所看到的:

  • XP 与 Visual Studio。被要求选择一个调试器,如果我选择了否,程序在没有 WER 对话的情况下退出。
  • 没有 Visual Studio 的 XP。显示 WER 对话框并发送错误报告(是的)。
  • Win7 与 Visual Studio。根本没有崩溃。
  • 没有 Visual Studio 的 Win7。我尚未测试,但怀疑它会正常运行。

因此,正如您所暗示的,崩溃代码和不具代表性的测试环境的组合阻碍了我的测试。

非常感谢!

于 2011-05-18T20:20:16.700 回答
1

如果您使用的是 WinForms 应用程序,它的事件循环中有一个 catch 处理程序,它会弹出一个对话框并阻止 Windows 错误报告 (WER) 启动。

此调用可防止这种情况发生。(http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/176b7f8c-3efb-4e6f-8deb-c685c62629db/)

要修复的魔术线:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
于 2011-11-18T10:31:40.070 回答
0

您不需要在应用程序中执行任何操作即可使其正常工作。我怀疑你不知何故设法以某种奇怪的方式崩溃,这与 WER 配合得不太好。尝试在应用程序初始化后添加崩溃,而不是在应用程序启动期间(如果您正在这样做)。我通常会这样做:

int* p=0;
*p=1;

另一种可能性是,由于 Visual Studio 的 Just In Time 调试器,您的计算机不会为您提供与最终用户相同的结果,因此请在典型的最终用户计算机上尝试。还有一种可能是您的机器是 XP 并且 WER 支持在 XP 中处于早期阶段,并且在 Vista 和 Win7 中更好,因此请尝试在较新的机器上使应用程序崩溃。

于 2011-05-18T18:21:18.410 回答