5

我按照 MSDN 上的描述设置了注册表项 HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps 。

我有一个测试程序 - 一个使用 Visual C++ 编译的控制台程序,它尝试在打印消息并退出之前取消引用 NULL 指针。测试程序曾经退出并转储一个核心文件,但现在它只是退出了。我没有核心。

我在物理硬件上运行 Windows Server 2008 R2 Enterprise SP1。

我不知道发生了什么变化。有什么改变可以阻止 WER 现在转储内核?

4

2 回答 2

4

以下可能会出错:

要写入的文件夹的权限

查看C:\ProgramData\Microsoft\Windows\WER它拥有的文件夹的权限

  • 读取和执行
  • 列出文件夹内容

创建子文件夹LocalDumps将继承权限。

因此,您应该修改该文件夹的权限或使用具有写入权限的其他文件夹。

注册表项的权限

如果权限不允许,Windows 可能无法读取注册表设置。例如,以下(非常愚蠢的)权限也将阻止 LocalDump:

LocalDumps 权限

32 与 64 位

Windows 错误报告由 Windows 执行,并且仅使用具有操作系统位数的注册表项。你说你设置了两个。如果这是真的,那很好。如果您只设置了 32 位注册表项,它将无法正常工作。

调试

如果您有 AeDebug 设置HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug,则这些设置在 WER 之前执行。

请注意,此条目可能存在于 32 位 (WOW6432Node) 和 64 位中。

通常这应该会导致启动调试器,但谁知道......它可能什么也不做,只是退出。

LocalDumps 已禁用

确保没有Disabled值为1in的 DWORDHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

使用 REG_SZ 而不是 REG_EXPAND_SZ

我见过有人将 REG_SZDumpFolder%APPDATA%. 只有 REG_EXPAND_SZ 会扩展环境变量。

于 2018-01-18T20:22:21.840 回答
0

确保您已在LocalDumps节点上添加了一个密钥,例如“LocalDumps\MyApplication.exe”。然后,更新该链接中说明的值。在发生崩溃时,WER 会查找具有匹配应用程序名称的键来决定如何处理转储。

于 2014-04-10T12:24:11.503 回答