Отчёт об ошибке (программирование)
В программировании отчёт об ошибке (англ. error report или crash report) — это файл, содержащий техническую информацию об исключительной ситуации (исключении), произошедшей в программе на компьютере пользователя. В терминологии программирования критическая ошибка, которая приводит к аварийному завершению программы («падению»), также называется крэшем или «крашем» (от англ. crash).
Отчёты об ошибках часто включают в себя такую информацию, как: тип крэша, образ стека, версия программы, тип центрального процессора, версия операционной системы, а также лог программы.
Создание отчёта об ошибке
Отчёт об ошибке обычно создаётся специальной программой (англ. crash reporter). Целью такой программы является сбор данных о произошедшем крэше и отправка этих данных по сети Интернет некой третьей стороне, обычно этой третьей стороной является производитель программного обеспечения. Отчёт об ошибке призван помочь разработчикам программного обеспечения выяснить причину крэша и исправить её в последующих релизах программного продукта.
Mac OS X
В Mac OS X существует стандартная программа — сборщик отчётов об ошибке: /System/Library/CoreServices/Crash Reporter.app. Crash Reporter.app отправляет крэш-логи, стандартные для ОС Unix, в компанию Apple Computer, где эти логи анализируют их инженеры. В верхнем поле окна отчёта об ошибке содержится крэш лог, а в нижнем пользователь может ввести свои комментарии, например, рассказать что он делал в момент, когда произошёл крэш. Пользователи также могут скопировать лог и отправить его разработчику ПО для анализа. Crash Reporter.app работает в трёх основных режимах в случае ошибки: ничего не делать, вывести сообщение «Application has crashed» или вывести окно отчёта об ошибке.
Windows
Microsoft Windows XP включает в себя службу отправки отчётов об ошибке, называемую Windows Error Reporting (не путать с Dr. Watson), которая позволяет отправить отчёт об ошибке в компанию Microsoft для онлайн-анализа. Информация отправляется в централизованную базу данных, управляемую Microsoft. Отчёт содержит необходимую информацию, которая позволяет разработчику диагностировать причину ошибки и исправить её.
Windows вероятно имеет наиболее сложную систему анализа ошибок на сегодняшний день, в которой централизованная база данных может быть настроена для сбора дополнительной информации от пользователей, испытывающих определённый тип проблемы. Система охватывает все части процесса отладки и выпуска ПО таким образом, что исправления могут быть применены к ПО на компьютере пользователя автоматически через службу Windows Update.
GNOME
На платформе GNOME для сбора и отправки отчётов об ошибке используется утилита Bug Buddy. Когда приложение, использующее библиотеки GNOME аварийно завершается, Bug Buddy генерирует снимок стека, используя отладчик gdb и предлагает пользователю отправить отчёт в систему GNOME bugzilla. Пользователь может добавить свой комментарий и посмотреть, что содержится в отчёте.
KDE
Утилита для отправки отчётов об ошибках в KDE называется Dr. Konqi.
Mozilla
Talkback
(также известный как Quality Feedback Agent) являлся утилитой для отправки сообщений об ошибках в программном обеспечении Mozilla вплоть до версии 1.8.1 для отправки отчётов об ошибках на централизованный сервер.[1] Talkback является проприетарным ПО, на которое Mozilla Corporation получила лицензию у компании SupportSoft. Когда продукты Mozilla (например Mozilla Firefox, Mozilla Thunderbird) аварийно завершали свою работу, агент Talkback предлагал пользователю ввести описание ошибки. Talkback не заменит собой встроенной в операционную систему программы для отправки отчётов об ошибке, которая, запускается наряду с агентом Talkback. Talkback был заменён на программу Breakpad в браузере Firefox начиная с версии 3.
Breakpad
Breakpad (ранее также известный как Airbag) — это замена Talkback. Он является ПО с открытым исходным кодом. Breakpad разрабатывается совместно Google и Mozilla, и используется в текущих продуктах, основанных на движке Mozilla, таких как Firefox или Thunderbird.[2][3] Этот продукт имеет большое значение, так как это первая мультиплатформенная утилита с открытым исходным кодом, предназначенная для отправки отчётов об ошибках.
Начиная с 27 мая 2007, Breakpad включён в стволовые сборки (trunk builds) Firefox 3 для Windows NT и Mac OS X, а также, несколько недель спустя, в Linux.[4]
Ubuntu
Вместе с релизом Ubuntu 6.10, Ubuntu включает утилиту Apport[5].
Apport перехватывает процессы, в которых произошло исключение и которые готовы создать дамп ядра (core dump), и записывает отчёты об ошибках в определённое место. Затем специальный демон, предлагает пользователю отправить отчёты в Ubuntu для их анализа.[6]
World of Warcraft
World of Warcraft — игра, использующая своё собственное средство доставки отчётов об ошибке, называемое «Error Reporter». Однако данная утилита не всегда перехватывает исключения; иногда вместо него вызывается стандартная утилита-крэш репортёр, встроенная в ОС. Известно, что Error Reporter иногда сам завершается аварийно в процессе отправки отчёта об ошибке.
CrashRpt
Ещё одной библиотекой для доставки отчётов об ошибке в операционной системе Windows является CrashRpt[7][8]. Библиотека CrashRpt позволяет отлавливать исключения в программах, созданных в Microsoft Visual C++ и работающих в Windows. Библиотека распространяется по «новой» лицензии BSD.
CrashRpt перехватывает необработанные исключения, создаёт файл-минидамп, строит описатель ошибки в формате XML, предоставляет интерфейс с пользователем, и, наконец, сжимает отчёт и отправляет его группе поддержки приложения.
См. также
Примечания
- Mozilla Talkback server . Дата обращения: 21 сентября 2006. Архивировано 5 апреля 2012 года.
- Deploying the Airbag. BSBlog (Mozilla developer Benjamin Smedberg’s weblog).
- Using Breakpad with Gran Paradiso (1.9a3). BSBlog (Mozilla developer Benjamin Smedberg’s weblog).
- Bug 381099 — Turn on crash reporting by default (Win+Mac), mozilla.org bug tracker]
- EdgyReleaseNotes (недоступная ссылка). Дата обращения: 14 февраля 2007. Архивировано 13 июня 2007 года.
- Apport . Ubuntu Wiki. Дата обращения: 14 февраля 2007.
- CrashRpt Project Page . Дата обращения: 20 августа 2009. Архивировано 3 февраля 2012 года.
- Использование библиотеки CrashRpt . Дата обращения: 5 июля 2010. Архивировано 5 апреля 2012 года.