Windows Error Reporting ( WER ) (кодовое название Watson) — это технология отчётов о сбоях, представленная Microsoft в Windows XP [1] и включенная в более поздние версии Windows и Windows Mobile 5.0 и 6.0. Не путать с отладочным инструментом Dr. Watson , который оставлял дамп памяти на локальном компьютере пользователя. Windows Error Reporting собирает и предлагает отправлять отладочную информацию после ошибки ( дамп памяти ) через Интернет в Microsoft , когда приложение аварийно завершает работу или перестаёт отвечать на запросы на рабочем столе пользователя. Никакие данные не отправляются без согласия пользователя. [2] Когда дамп сбоя (или другая информация о сигнатуре ошибки) достигает сервера Microsoft, он анализируется, и информация о решении отправляется обратно пользователю, если она доступна. Решения обслуживаются с помощью ответов Windows Error Reporting. Windows Error Reporting работает как служба Windows . [3] Киншуман Киншуманн — первоначальный архитектор WER. WER также был включён в Зал славы Ассоциации вычислительной техники (ACM) за его влияние на компьютерную индустрию. [4] [5]
Microsoft впервые представила функцию Windows Error Reporting в Windows XP . [1]
Отчеты об ошибках Windows были значительно улучшены в Windows Vista , когда были введены общедоступные API для сообщения об ошибках, отличных от сбоев и зависаний приложений. [6] Используя новые API, как описано в MSDN, разработчики могут создавать собственные отчеты и настраивать пользовательский интерфейс отчетов. Отчеты об ошибках Windows также были переработаны с упором на надежность и пользовательский опыт. Например, WER теперь может сообщать об ошибках даже из процессов в плохих состояниях, таких как исчерпание стека , повреждение PEB/TEB и повреждение кучи , состояния, которые в выпусках до Windows Vista привели бы к тихому завершению программы без отчета об ошибке. Также был введен новый апплет панели управления «Отчеты о проблемах и решения», который ведет учет ошибок и проблем системы и приложений, а также представляет возможные решения проблем.
Апплет «Отчеты о проблемах и решения» панели управления был заменен разделом «Обслуживание» Центра действий в Windows 7 и Server 2008 R2 .
Новое приложение Problem Steps Recorder (PSR.exe) доступно во всех сборках Windows 7 и позволяет собирать действия, выполняемые пользователем при возникновении сбоя, чтобы тестировщики и разработчики могли воспроизвести ситуацию для анализа и отладки. [7]
WER — это распределенная система . Клиентское программное обеспечение обнаруживает состояние ошибки, генерирует отчет об ошибке, маркирует контейнер и сообщает об ошибке службе WER. Служба WER регистрирует возникновение ошибки, а затем, в зависимости от известной информации о конкретной ошибке, может запросить у клиента дополнительные данные или направить клиента к решению. Программисты получают доступ к службе WER для получения данных для определенных отчетов об ошибках и для отладки на основе статистики.
Ошибки, собранные клиентами WER, отправляются в службу WER. Служба WER использует около 60 серверов, подключенных к сети хранения данных объемом 65 ТБ, в которой хранится база данных отчетов об ошибках, и сети хранения данных объемом 120 ТБ, в которой хранится до 6 месяцев необработанных CAB-файлов. Служба рассчитана на прием и обработку более 100 миллионов отчетов об ошибках в день, что достаточно для того, чтобы пережить коррелированные глобальные события, такие как интернет-черви . [8]
Он также может предоставлять услугу, где он считал объект сервером каталогов. Информация также хранится для сбора и связывания с объектом и ресурсом. Иногда служба каталогов не должна запоминать физический адрес сетевых ресурсов, предоставляя имя и находя ресурсы.
В системе Microsoft Windows Error Reporting (WER) отчеты о сбоях организованы по «корзинам». Корзины классифицируют проблемы по: [9]
В идеале каждый контейнер содержит отчеты о сбоях, вызванных одной и только одной первопричиной. Однако есть случаи, когда это идеальное сопоставление один к одному не выполняется. Во-первых, эвристика, которая группирует сбои, может привести к тому, что один сбой будет приписан нескольким контейнерам; например, каждый раз, когда приложение со сбоем перекомпилируется, приложение будет иметь новую дату сборки модуля, и полученные сбои затем будут сопоставлены с несколькими контейнерами. Во-вторых, поскольку только определенная информация о состоянии сбоя учитывается в алгоритме группировки, несколько отдельных ошибок могут быть сопоставлены одному контейнеру; например, если приложение вызывает одну функцию, такую как strlen, со строками, поврежденными по-разному различными дефектами базового кода, сбои могут быть сопоставлены одному контейнеру, поскольку они кажутся сбоями в одной и той же функции из одного и того же приложения и т. д. Это происходит, потому что контейнер генерируется на клиенте ОС Windows без выполнения какого-либо символьного анализа дампа памяти: модуль, который выбирается клиентом отчетов об ошибках Windows, является модулем наверху стека. Исследования многих отчетов приводят к выявлению модуля неисправности, который отличается от первоначального определения ковша. [14]
Производители программного и аппаратного обеспечения могут получить доступ к своим отчетам об ошибках с помощью программы Microsoft Windows Dev Center Hardware and Desktop Dashboard (ранее Winqual ). [15] Чтобы гарантировать, что данные отчетов об ошибках поступают только инженерам, ответственным за продукт, Microsoft требует, чтобы заинтересованные поставщики получили цифровой идентификатор VeriSign Class 3 или сертификат DigiCert . [16] Цифровые сертификаты, предоставляемые более дешевыми поставщиками (такими как Thawte , Comodo , GlobalSign , GeoTrust , Cybertrust , Entrust , GoDaddy , QuoVadis, Trustwave , SecureTrust, Wells Fargo ) не принимаются. [17] [18] [19] [20] [21]
Производители программного и аппаратного обеспечения также могут замкнуть цикл со своими клиентами, связывая сигнатуры ошибок с ответами Windows Error Reporting. Это позволяет распространять решения, а также собирать дополнительную информацию от клиентов (например, воспроизводить шаги, которые они предприняли до сбоя ) и предоставлять им ссылки на поддержку.
Microsoft сообщила, что данные, собранные из отчетов об ошибках Windows, оказали огромное влияние на то, как разрабатывается программное обеспечение внутри компании. Например, в 2002 году Стив Балмер отметил, что отчеты об ошибках позволили команде Windows исправить 29% всех ошибок Windows XP с помощью Windows XP SP1. Более половины всех ошибок Microsoft Office XP были исправлены с помощью Office XP SP2. [22] Успех частично основан на правиле 80/20 . Данные отчетов об ошибках показывают, что существует небольшой набор ошибок, который отвечает за подавляющее большинство проблем, с которыми сталкиваются пользователи. Исправление 20% дефектов кода может устранить 80% или более проблем, с которыми сталкиваются пользователи. Статья в New York Times подтвердила, что данные отчетов об ошибках сыграли важную роль в исправлении проблем, обнаруженных в бета-версиях Windows Vista и Microsoft Office 2007. [ 23]
Хотя Microsoft предоставила гарантии конфиденциальности, они признают, что персональная информация может содержаться в памяти и данных приложений, собранных в 100-200 КБ «минидампы», которые Windows Error Reporting собирает и отправляет обратно в Microsoft. Они настаивают на том, что в случае отправки персональных данных в Microsoft они не будут использоваться для идентификации пользователей, согласно политике конфиденциальности Microsoft . [24] [25] Но при сообщении проблем в Microsoft пользователи также должны доверять партнерам Microsoft. Около 450 партнеров получили доступ к базе данных отчетов об ошибках для просмотра записей, связанных с драйверами их устройств и приложениями. [26]
Более старые версии WER отправляют данные без шифрования; только WER из Windows 8 использует шифрование TLS. [27] В марте 2014 года Microsoft выпустила обновление (KB2929733) для Windows Vista, 7 и Server 2008, которое шифрует первую стадию WER. [28]
В декабре 2013 года независимая лаборатория обнаружила, что WER автоматически отправляет информацию в Microsoft, когда к ПК подключается новое USB-устройство. [27]
По данным Der Spiegel , Microsoft crash reporter был использован подразделением TAO АНБ для взлома компьютеров Секретариата общественной безопасности Мексики . Согласно тому же источнику, отчеты о сбоях Microsoft автоматически собираются в базе данных XKeyscore АНБ , чтобы облегчить такие операции. [29]