我设置了注册表项HKLM \ SOFTWARE \ Microsoft \ Windows \ Windows错误报告\ LocalDumps as described on MSDN。
我有一个测试程序 - 一个用Visual C ++编译的控制台程序,它尝试在打印消息和退出之前取消引用NULL指针。用于退出和转储核心文件的测试程序,但现在它只是退出。我没有核心。
我在物理硬件上运行Windows Server 2008 R2 Enterprise,SP1。
我不知道改变了什么。什么可以改变,以防止WER现在倾销核心?
答案 0 :(得分:2)
以下可能出错:
查看文件夹C:\ProgramData\Microsoft\Windows\WER
的权限
创建子文件夹LocalDumps
将继承权限。
因此,您应该修改该文件夹的权限,或者使用具有写权限的其他文件夹。
如果权限不允许,Windows可能无法读取注册表设置。例如。以下(非常愚蠢)权限也会阻止LocalDump:
Windows错误报告由Windows执行,仅使用具有操作系统位数的注册表项。你说你设置了两个。如果这是真的,那很好。如果您只设置了32位注册表项,那么它将无法正常工作。
如果您有AeDebug HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug
的设置,则会在WER之前执行。
请注意,此条目可能存在于32位(WOW6432Node)和64位。
通常这会导致启动调试器,但谁知道......它可能什么也不做,只是退出。
确保Disabled
1
的DWORD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
我见过人们将DumpFolder
的REG_SZ与%APPDATA%
结合使用。只有REG_EXPAND_SZ才会扩展环境变量。
答案 1 :(得分:0)
确保您已在 LocalDumps 节点上添加了一个键,例如" LocalDumps \ MyApplication.exe"。然后,更新该链接中说明的值。在发生崩溃时,WER会查找具有匹配应用程序名称的密钥,以决定如何处理转储。