Использование WER

Начиная с Windows Vista, Windows по умолчанию предоставляет отчеты об ошибках сбоя, сбоях и сбоях ядра, не требуя внесения изменений в приложение. При необходимости в отчете будут содержаться сведения о дампе минидампов и дампах кучи. Вместо этого приложения используют API WER для отправки отчетов о проблемах, относящихся к приложениям, в корпорацию Майкрософт.

Так как Windows автоматически сообщает об необработанных исключениях, приложение не должно обрабатывать неустранимые исключения. Если процесс сбоя или не отвечает является интерактивным, WER отображает пользовательский интерфейс, информирующий пользователя о проблеме. Приложение считается неотвечающим, если оно не отвечает на сообщения Windows в течение пяти секунд, пока пользователь пытается взаимодействовать с приложением.

отчеты об ошибках Windows поток для сбоев, отсутствия ответа и сбоев ядра

Ниже приведены шаги, которые выполняются в случае сбоя приложения, отсутствия ответа или сбоя ядра.

  1. Возникает проблемное событие.
  2. Операционная система вызывает WER.
  3. WER собирает данные, создает отчет и запрашивает у пользователя согласие (при необходимости).
  4. WER отправляет отчет в корпорацию Майкрософт (Watson Server), если пользователь предоставил согласие.
  5. Если сервер Watson запрашивает дополнительные данные, WER собирает данные и запрашивает согласие пользователя (при необходимости).
  6. Если приложение зарегистрировано для восстановления и перезапуска, WER выполняет зарегистрированные функции обратного вызова, пока данные сжимаются и отправляются в корпорацию Майкрософт (если пользователь согласился).
  7. Если корпорация Майкрософт может получить ответ на эту проблему, пользователь получает уведомление.

Приложения могут использовать следующие функции для настройки содержимого отчета, отправляемого в корпорацию Майкрософт. Функции регистрации сообщают WER включить определенные файлы и блоки памяти в создаваемый отчет об ошибках.

поток отчеты об ошибках Windows для создания отчетов об универсальных событиях

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

  1. Возникает неустранимое событие проблемы.
  2. Приложение распознает событие и использует следующую последовательность вызовов функций для создания отчета.
    1. Вызовите функцию WerReportCreate , чтобы создать отчет.
    2. Вызовите функцию WerReportSetParameter , чтобы задать параметры отчета.
    3. Вызовите функцию WerReportAddFile , чтобы добавить файлы в отчет.
    4. Вызовите функцию WerReportAddDump , чтобы добавить минидамп в отчет (при необходимости).
    5. Вызовите функцию WerReportSubmit для отправки отчета.
    6. Вызовите WerReportCloseHandle , чтобы освободить ресурсы.
  3. В зависимости от конкретных параметров, используемых при вызове функций на шаге 2, WER завершит создание отчетов об ошибках. WER гарантирует, что отчеты выполняются в соответствии с политиками, установленными пользователем. Например, WER отправляет отчет в корпорацию Майкрософт, помещает отчет в очередь и показывает пользователю соответствующие пользовательские интерфейсы.

Исключение приложения из отчеты об ошибках Windows

Чтобы исключить приложение из отчетов об ошибках Windows, используйте функцию WerAddExcludedApplication . Чтобы восстановить отчеты об ошибках для приложения, используйте функцию WerRemoveExcludedApplication .

Автоматическое восстановление данных и перезапуск неисправного приложения

Приложение может использовать восстановление и перезапуск приложения для сохранения данных и сведений о состоянии перед завершением работы приложения из-за необработанного исключения или при остановке ответа приложения. Приложение также перезапускается при запросе. Дополнительные сведения см. в разделе Восстановление и перезапуск приложений.

Устаревший API

Приложение может сообщить о сбое, вызвав функцию ReportFault . Однако не следует использовать функцию ReportFault , если у вас нет очень конкретных требований, которые не могут быть выполнены поведением операционной системы по умолчанию в отчетах об ошибках.

Если отчеты об ошибках включены, система отображает для пользователя диалоговое окно с сообщением о том, что приложение столкнулось с проблемой и закроется. Если в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug настроен отладчик, пользователю предоставляется возможность запуска отладчика. Пользователю также предоставляется возможность отправить отчет в корпорацию Майкрософт. Если пользователь отправляет отчет, система отображает другое диалоговое окно с благодарностью за отчет и ссылкой на дополнительные сведения.

Система отчетов об ошибках поддерживает следующие режимы работы.

Режим работы Описание
Отчеты об общей памяти Если контекст безопасности приложения совпадает с контекстом безопасности вошедшего в систему пользователя, система отчетов об ошибках использует блок общей памяти для обмена данными. Этот режим нельзя использовать с режимом отчетов манифеста.
Отчеты о манифесте Если контекст безопасности приложения отличается от контекста безопасности вошедшего в систему пользователя, система отчетов об ошибках использует файл для обмена данными. Этот режим также используется для создания отчетов о неотвеченных приложениях и сбоях ядра. Этот режим нельзя использовать с режимом создания отчетов в общей памяти.
Интернет-отчеты Система отчетов об ошибках отправляет все данные в корпорацию Майкрософт через Интернет. Это режим работы по умолчанию. Его нельзя использовать в режиме корпоративной отчетности. Этот режим используется, если администратор не указал корпоративный путь отправки.
Корпоративная отчетность Система отчетов об ошибках отправляет все данные в общую папку, а не отправляет их непосредственно в корпорацию Майкрософт. Это позволяет корпоративным ИТ-менеджерам просматривать данные перед их отправкой в корпорацию Майкрософт. Этот режим используется при наличии корпоративного пути отправки, указанного администратором. Его нельзя использовать в режиме интернет-отчетов.
Отчеты без головы Система отчетов об ошибках не будет отображать диалоговые окна для пользователя. Это позволяет ИТ-менеджерам организации в любое время собирать отчеты об ошибках от своих сотрудников. Этот режим используется, когда администратор включает отчеты, но уведомление отключено. Его можно использовать только в режиме корпоративной отчетности.

Чтобы исключить приложение из отчетов об ошибках, используйте функцию AddERExcludedApplication .