由WER生成的Minidump,但没有可用的堆栈跟踪

时间:2014-04-02 15:32:36

标签: c# wpf stack tracing windows-error-reporting

我有一个用C#编写的WPF应用程序,我在同事机器上崩溃了。幸运的是,当发生崩溃时,他将Windows错误报告设置为生成小型转储。他把他的.exe,他的.pdb和他的.dmp发给我了。我将它们全部放在同一目录中并从Visual Studio 2013中的该位置打开.dmp。我添加了来自Microsoft Symbol Servers的符号,然后尝试使用Mixed调试,但是虽然调试器启动,但我什么都没看到。通常在崩溃转储上我得到一个堆栈跟踪或其他东西,但调试器字面上没有显示任何东西 - 没有线程,没有。

该应用程序是一个x64 WPF应用程序,使用第三方DLL,如RadControls for WPF等,异常代码为0xC0000005。它说堆信息不存在。

我可以做些什么来查看有关我的错误的更多信息,或者至少确保下次发生一些堆栈跟踪时可用?

1 个答案:

答案 0 :(得分:0)

我的 Winforms 应用程序遇到了类似的情况,以下是我使用堆栈跟踪获取转储的步骤。

  1. Turned on Windows Error Reporting。确保将 DumpType 设置为生成完整转储。

  2. 在程序代码中,在项目设置中关闭应用程序框架并创建自定义入口类。

  3. 将行 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); 添加到 Main()

现在,如果应用程序有未处理的异常,它会崩溃并创建一个可以打开和调试的转储文件。

注意:这仍然没有指向用户引发的异常的正确行,但它确实适用于应用程序生成的异常。