在应用程序退出期间调试崩溃 (WPF)

Debugging crash during app exit (WPF)

我想弄清楚为什么 WPF 应用程序不会在关闭时立即退出。使用 Process Explorer 我发现 WerFault.exe 在退出时启动,这似乎表明在拆卸过程中发生了某些崩溃,可能是某些析构函数或处置失败。当我最近切换到 VS2015 时,这种情况开始发生。我是运行Windows8.

我的问题是:如何找出真正的问题所在?有什么方法可以找到 WerFault.exe 的崩溃日志?我有数百个析构函数和处置方法,因此很难在所有的析构函数和处理方法中设置断点。在 VS 中捕获此类错误的任何其他方法?

退出代码是 -1073740791,"indicate a bug in the executed software that causes stack overflow, leading to abnormal termination of the software"。但是在哪里呢?

事件日志中的更多信息:

故障模块名称:ucrtbase.DLL,版本:10.0.10240.16390,时间戳:0x55a5b718

异常代码:0xc0000409

故障偏移量:0x0000000000065a4e

您可以尝试启用 user mode dumps:

  1. 创建注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
  2. LocalDumps 中,创建一个作为可执行文件名称的键
  3. 在您刚刚创建的密钥中,根据需要设置 DumpFolderDumpCountDumpTypeCustomDumpFlags 的值(您一定要设置 DumpType 到 2 用于完整转储,否则我认为不会捕获足够的信息来调试托管转储)。

完成此操作后,每当您的可执行文件崩溃时,都会在 DumpFolder(或默认情况下 %LOCALAPPDATA%\CrashDumps)指定的文件夹中创建一个转储文件。