【问题标题】:Debugging crash during app exit (WPF)应用退出期间调试崩溃 (WPF)
【发布时间】:2016-04-22 11:33:16
【问题描述】:

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

我的问题是:我怎样才能找出真正的问题是什么?有什么方法可以找到 WerFault.exe 的崩溃日志?我有数百个析构函数和处置方法,因此在所有这些中放置断点有点困难。在 VS 中捕获这些类型的错误还有其他方法吗?

退出代码是-1073740791,它“表示执行的软件中存在导致堆栈溢出的错误,导致软件异常终止”。但是在哪里?

来自事件日志的更多信息:

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

异常代码:0xc0000409

故障偏移:0x0000000000065a4e

【问题讨论】:

  • 你试过JIT调试吗? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug 下是否有 Debugger 值?

标签: wpf visual-studio-2015 visual-studio-debugging


【解决方案1】:

您可以尝试启用user mode dumps:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多