2

我有一个用 C# 编写的 WPF 应用程序,它在同事的机器上崩溃了。幸运的是,他将 Windows 错误报告设置为在发生崩溃时生成小型转储。他给我发了他的 .exe、他的 .pdb 和他的 .dmp。我将它们全部放在同一个目录中,并从 Visual Studio 2013 中的该位置打开 .dmp。我从 Microsoft 符号服务器中添加了符号,然后尝试使用混合进行调试,但尽管调试器启动,但我什么也没看到。通常在故障转储中,我会得到堆栈跟踪或其他信息,但调试器实际上不显示任何内容 - 没有线程,什么都没有。

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

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

4

1 回答 1

0

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

  1. 打开 Windows 错误报告。确保将 DumpType 设置为生成完整转储。

  2. 在程序代码中,在 Project Settings 中关闭 Application Framework 并创建自定义入口类。

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

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

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

于 2021-07-16T17:07:42.297 回答