Microsoft Windows Vista
Механизмы обеспечения надежности приложений

Часть 1. Windows Feedback Platform

Алексей Федоров

Windows Feedback Platform

Windows Feedback Platform на уровне пользователей

Windows Feedback Platform на уровне разработчиков

Программные интерфейсы Windows Feedback Platform

   Генерация и отсылка отчетов

 

В настоящей статье мы рассмотрим два включенных в состав операционной системы Microsoft Windows Vista механизма обеспечения надежности приложений — Windows Feedback Platform и Restart Manager, а также кратко обсудим ряд других механизмов, появившихся в Windows Vista.

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

Restart Manager служит для сохранения информации при внезапных сбоях, перезапусках приложений и в ряде других ситуаций и предоставляет разработчикам набор программных интерфейсов, использование которых в приложениях поможет сделать их более надежными.

Windows Feedback Platform

Windows Feedback Platform (WFP) — это дальнейшее развитие механизмов Windows Error Reporting (WER). В него включены все возможности Windows Error Reporting, а также ряд новинок, впервые появившихся в Windows Vista. На высоком уровне процесс использования WFP выглядит следующим образом:

  1. Пользователь работает с приложением.
  2. В приложении внезапно происходит сбой, зависание или утечка памяти — все эти три состояния отслеживаются Windows Vista.
  3. Данные, описывающие возникшие проблемы, отсылаются на специальный портал WinQual.
  4. Разработчик приложения анализирует отосланные данные.
  5. В приложение вносятся исправления, которые публикуются на портале.
  6. Пользователь узнает о появлении исправленной версии через Problem Center в Windows Vista.

Как следует из описания процесса, он состоит из двух частей: в одной из них участвуют пользователи, а другая рассчитана на разработчиков. Полноценная отдача от механизма Windows Feedback Platform возможна только при использовании обеих частей.

Windows Feedback Platform на уровне пользователей

Пользователи не должны игнорировать предложения отослать отчет о сбое (кнопка Send the Report) — его необходимо отсылать при первом соединении с Интернетом, а затем периодически проверять наличие решения проблемы в специальном разделе Control Panel, который называется System and Maintenance/Problem Center (Problem Reports and Solutions). При поступлении решения проблемы следует активизировать соответствующую ссылку и выполнить указанные действия.

Пользователям предоставляется возможность сконфигурировать сервисы WFP и указать — нужно отсылать данные о сбоях или нет. Это возможно как при установке Windows Vista, так и через настройки Group Policy.

Новый компонент Control Panel в Windows Vista — Problem Center (Problem Reports and Solutions), доступный в разделе System and Maintenance (рис. 1), — отображает список проблем в хронологическом порядке, отосланные отчеты об ошибках и предоставляет доступ к решениям проблем по мере их поступления.

 

Рис. 1. Раздел System and Maintenance в Control Panel

Problem Center можно вызывать из панели управления или как отдельную утилиту — в этом случае командная строка вызова будет выглядеть так: %SystemRoot%\system32\wercon.exe.

Как видно из рис. 1, информация в Problem Center делится на три группы: Check for new solutions (Искать новые решения), Choose how to check for solutions (Выбор способа проверки наличия решений) и View problem history (Просмотр истории сбоев).

При открытии экрана поиска новых решений (рис. 2) можно  узнать, появились ли решения проблем, информация о которых была отослана ранее.

 

Рис. 2. Раздел Check for new solutions

При наличии решений у пользователей появляется возможность обратиться к онлайновой службе (требуется подключение к Интернету) для получения дальнейших указаний.

Раздел Check for new solutions (рис. 3) позволяет выбрать между автоматическим поиском (рекомендуется включить эту опцию) и поиском после получения подтверждения от пользователя.

 

Рис. 3. Раздел Choose how to check for solutions

В разделе расширенных настроек можно включить или вы ключить использование механизмов WFP, а также выбрать приложения, информацию о сбоях в которых отсылать не нужно.

Раздел истории сбоев (рис. 4) позволяет получить краткую информацию о сбоях, происходивших в системе. Отображаются приложение, в котором произошел сбой, тип сбоя (включая ошибки на уровне операционной системы), дата и время сбоя, а также статус — была отослана информация о сбое или нет.

 

Рис. 4. Раздел View problem history

Каждая запись в протоколе ошибок может быть раскрыта для получения более подробной информации. Например, можно  узнать, что именно было отослано в составе отчета.

Как видно из рис. 5, никакой конфиденциальной информации в Microsoft не отправляется. В ря де случаев для решения конкретной проблемы с тем или иным приложением или с работоспособностью компонентов Windows может потребоваться дополнительная информация. В этом случае запрос на дополнительные данные будет отображен в соответствующей строке протокола.

 

Рис. 5. Детальная информация о сбое

Как мы отметили выше, процесс обработки и исправления ошибок в приложениях состоит из двух частей. Задача пользователей — отсылать информацию о возникновении ошибок в приложениях и обращаться к Problem Center за возможными решениями. Задача разработчиков приложений — своевременно обрабатывать и анализировать данные о сбоях в приложениях и создавать обновления или «заплатки» к своим приложениям.

Для настройки механизмов Windows Feedback Platform можно использовать либо Group Policy, либо соответствующие ключи реестра (рис. 6):

 

Рис. 6. Ключи реестра, соответствующие Windows Feedback Platform

  • HKEY_CURRENT_USER\ Software\Microsoft\Windows\ Windows Error Reporting;
  • HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows\ Windows Error Reporting.

Windows Feedback Platform на уровне разработчиков

Данные, собранные о приложении, в котором произошел сбой, отсылаются на специальный портал Windows Quality Online Services (рис. 7), расположенный по адресу: https://winqual.microsoft.com/. Любая компания, производящая программное обеспечение, может бесплатно зарегистрироваться на этом портале и получать информацию о сбоях в своих приложениях. Единственная затрата — приобретение сертификата у компании Verisign (на момент написания данного обзора обсуждалась возможность снижения цены сертификата для компаний, использующих сервисы WinQal, с 399 до 99 долл.).

 

?en. 7. Ii?oae Windows Quality Online Services

Программные интерфейсы Windows Feedback Platform

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

При необходимости приложение может быть отключено от механизмов WFP — для этого следует использовать функцию WerAddExcludedApplication(), указав ей в качестве параметра полное имя исполняемого файла приложения. Для отмены операции отключения приложения от механизмов WFP используется функция WerRemoveExcluded Application(). Для выполнения этих функций приложение должно быть запущено под учетной записью администратора или получить соответствующие привилегии при запуске под другими учетными записями.

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

Данные, отсылаемые на сайт WinQual, делятся на две группы. К пер вой группе относятся данные, используемые для идентификации и категоризации проблемы. Данные содержатся в наборе из десяти строчных параметров, которые описывают возникшую проблему (см. раздел Problem Signature на рис. 5). В режиме отчетов Standard или Simple значения этих параметров заполняются автоматически. При создании расширенных отчетов данные заносятся с помощью функции WerReportSetParameter().

Обычный набор данных включает название приложения (например, winword.exe), версию приложения (например, 10.0.2627.0), имя модуля (например, mso.dll), версию модуля (например, 10.0.2613.1) и смещение внутри модуля (например, 0003cbb). Во все отчеты автоматически включается информация о языке и идентификаторе страны (LocaleID) и номере версии операционной системы.

Во вторую группу включаются данные, которые могут использоваться для отладки приложения и нахождения причины, вызвавшей сбой. Сюда могут входить файлы, мини-дамп памяти на момент сбоя, содержимое программной «кучи», содержимое реестра, за просы (к базе данных, WMI и т.п.) и пр., в зависимости от конкретного приложения и характера сбоя.

Используя программные интерфейсы WFP, можно включать в состав отчета два типа объектов — файлы и блоки памяти.

Для включения в состав отчета файла используется функция WerRegisterFile(), которой в качестве параметров передаются: полное имя файла, его тип (одно из значений WER_REGISTER_FILE_ TYPE) и два флага — WER_ DELETE_FILE_WHEN_DONE, указывающий на то, что файл должен быть удален после отсылки отчета, и WER_ANONYMOUS_ DATA, указывающий на то, что в файле не содержатся приватные данные. Возможные значения параметра WER_REGISTER_FILE_ TYPE приведены в таблице.

 

Возможные значения параметра WER_REGISTER_FILE_TYPE

Отметим, что задача генерации дампа памяти возлагается на разработчика приложения — для ее решения можно применять, например, отладочные механизмы, описанные в Windows SDK (см. функцию MiniDumpWriteDump).

Для исключения файла из отчета следует использовать функцию WerUnRegisterFile(), указав ей в качестве параметра имя исключаемого файла.

В большинстве сценариев отсылка дополнительных файлов происходит только при получении соответствующего запроса от сервера. В случае отсылки дополнительных файлов необходимо применять флаг WER_ADD_ REGISTERED_DATA при вызове функции WerReportSubmit() — о ней мы расскажем ниже.

Для включения в состав отчета копии области памяти используется функция WerRegister Memory Block(), в качестве параметров которой передаются адрес начала включаемого блока памяти и размер этого блока в байтах (максимальный размер блока памяти — WER_MAX_MEM_BLOCK_SIZE). Для отмены включения копии области памяти в отчет следует применять функцию WerUnRegister Memory Block(). В случае отсылки данных из памяти необходимо использовать флаг WER_ADD_ REGISTERED_DATA при вызове функции WerReportSubmit().

Генерация и отсылка отчетов

Процесс генерации и отсылки отчета состоит из нескольких шагов. Инициализация отчета выполняется вызовом функции WerReportCreate(), с помощью которой указывается тип события, для которого создается отчет, тип отчета (WerReportNonCritical — для сбоев с возможностью восстановления и WerReport Critical — для сбоев, повлекших аварийное завершение приложения), ссылка на информацию, включаемую в отчет (см. структуру WER_REPORT_INFORMATION), и переменная, которая будет содержать ссылку на созданный отчет, — Report Handle.

После того как отчет успешно инициализирован, необходимо добавить в него параметры первой и второй групп. Параметры первой группы задаются с помощью функции WerReportSet Parameter(), которой передается ссылка на созданный отчет (результат успешного выполнения функции WerReportCreate), набор флагов, имя параметра и его значение (16-битная строка в Unicode, заканчивающаяся нулем).

Для включения в состав отчета дополнительных параметров применяется функция WerReport AddSecondaryParameter(), которой передается ссылка на отчет, имя параметра и его значение.

Помимо возможности включения в состав отчетов файлов и снимков областей памяти, предусмотрена передача в составе отчета и дампов памяти — для этого можно использовать функцию WerReport AddDump(), в качестве параметров которой указываются ссылка на отчет, ссылки на процесс и поток, для которых был создан дамп, тип дампа (одно из значений WER_DUMP_TYPE), информация об исключении (указатель на структуру типа WER_EXCEP TION_INFORMATION), дополнительные опции (тип данных WER_DUMP_CUSTOM_OPTIONS) и флаги. Отметим, что процесс, для которого создается дамп, должен иметь права доступа STANDARD_RIGHTS_READ и PROCESS_QUERY_INFORMATION.

Для включения в состав отчета файлов мы применяем функцию WerReportAddFile(), которой передаем ссылку на отчет, полное имя файла, тип файла (WER_FILE_ TYPE) и дополнительные флаги.

Помимо этого разработчикам предоставляется возможность настройки пользовательского интерфейса — выбора информации, отображаемой в системной диалоговой панели. Для этих целей служит функция WerReport SetUI Option(), которой передается ссылка на отчет, тип интерфейса отчета (WER_REPORT_UI) и значение отображаемой строки. Приложение может модифицировать любое из полей интерфейсного элемента, заданного параметром WER_REPORT_UI; каждый вызов функции позволяет модифицировать только одно поле. Функция WerReportSetUIOption() может вызываться в любой момент работы приложения до непосредственной отсылки отчета.

После того как отчет сформирован и настроен, мы используем функцию WerReportSubmit() для отсылки отчета. В качестве параметров этой функции передаются ссылка на отчет, тип пользовательского интерфейса (наличие прав администратора, подтверждение отсылки и т.п.) и набор флагов. После того как отчет отослан, следует закрыть ссылку на него, используя функцию WerReportCloseHandle().

Среди дополнительных функций, доступных для разработчиков, можно отметить WerGet Flags(), позволяющую  узнать текущие настройки механизма отсылки отчетов об ошибках для указанного процесса.

Все вышеописанные функции, реализующие механизмы настройки Windows Feedback Platform, находятся в системных модулях Kernel32.dll и Wer.dll, а их прототипы описаны в заголовочном файле werapi.h, который входит в состав Windows SDK.

Дополнительная информация по механизмам Windows Feedback Platform доступна на сайте Microsoft по адресу: http://msdn.microsoft.com/isv/resources/wer/default.aspx.

 

В начало В начало

КомпьютерПресс 1'2007

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует