Поделиться через


Использование 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.