Перестал работать раздел реестра LocalDumps (отчеты об ошибках Windows)

Я настроил раздел реестра, HKLM\SOFTWARE\Microsoft\Windows\ Отчеты об ошибках Windows \LocalDumps, как описано в MSDN.

У меня есть тестовая программа - консольная программа, скомпилированная с Visual C++, которая пытается разыменовать нулевой указатель перед печатью сообщения и завершением работы. Тестовая программа использовалась для выхода и выгрузки файла ядра, но теперь она просто завершается. Я не получаю ядро.

Я использую Windows Server 2008 R2 Enterprise, SP1 на физическом оборудовании.

Я не знаю, что изменилось. Что могло бы измениться, чтобы теперь WER не сбрасывал ядра?

2 ответа

Решение

Убедитесь, что вы добавили ключ на узел LocalDumps, например "LocalDumps\MyApplication.exe". Затем обновите значения, которые описаны в этой ссылке. Во время сбоя WER ищет ключ с соответствующим именем приложения, чтобы решить, как обрабатывать дамп.

Следующее может пойти не так:

Разрешения папки для записи в

Смотря на разрешения папки C:\ProgramData\Microsoft\Windows\WER она имеет

  • Читать и выполнить
  • Список содержимого папки
  • Читать

Создание подпапки LocalDumps унаследует разрешения.

Поэтому вам следует либо изменить разрешения для этой папки, либо использовать другую папку с разрешениями на запись.

Разрешения ключа реестра

Windows может не прочитать параметры реестра, если разрешения не позволяют этого. Например, следующие (действительно глупые) разрешения также предотвратят локальный дамп:

Разрешения LocalDumps

32 против 64 бит

Отчет об ошибках Windows выполняется Windows и использует только раздел реестра с разрядностью ОС. Вы сказали, что создали оба. Если это правда, это нормально. Если вы установите только 32-битный ключ реестра, он не будет работать.

AeDebug

Если у вас есть настройки для AeDebug HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug, те выполнены перед WER.

Обратите внимание, что эта запись может существовать в 32-битном (WOW6432Node) и 64-битном.

Обычно это должно привести к запуску отладчика, но кто знает... он может ничего не делать и просто завершиться.

LocalDumps отключен

Убедитесь, что нет DWORD Disabled со значением 1 в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

Использование REG_SZ вместо REG_EXPAND_SZ

Я видел людей, использующих REG_SZ для DumpFolder в комбинации с %APPDATA%, Только REG_EXPAND_SZ будет расширять переменные среды.

Другие вопросы по тегам