Upload
corehardby
View
148
Download
0
Embed Size (px)
Citation preview
ИСПОЛЬЗОВАНИЕ СИСТЕМ АНАЛИТИКИ КРЭШЕЙЛАПИЦКИЙ АРТЁМ
2
COREHARD // ВВЕДЕНИЕ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
OOPS…
3
Крэш — это такое состояние программы (приложения или операционной системы), в котором дальнейшее корректное её выполнение не представляется возможным.
COREHARD // ВВЕДЕНИЕ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ЧТО ТАКОЕ CRASH?
ОТКУДА БЕРУТСЯ КРЭШИ?
5
COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ПРИЧИНЫ КРЭШЕЙ ПРИЛОЖЕНИЙ
Основные причины крэшей приложений• Необработанное исключение или сигнал;• Попытка чтения (или записи) памяти по адресу, не выделенному приложению для
чтения (или записи);• Переполнение стека;• Попытка выполнить инструкцию с некорректными параметрами (деление на 0,
работа с невыровненной памятью на ARM, …);• Попытка выполнить некорректную инструкцию или инструкцию, не доступную в
текущем режиме работы процессора;• Некорректная работа с системными функциями (передача неверных параметров,
недостаточные полномочия, нехватка памяти, …), нарушение целостности системных объектов;
• Вызов std::terminate или std::abort при серьезных нарушениях логики работы приложения, после которых дальнейшее его выполнение не имеет смысла.
6
COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
КРЭШИ И ПОЛЬЗОВАТЕЛИ
Для пользователя крэш – это больше чем неудобство• Внезапное завершение приводит к потере контекста работы с
приложением, восстановить который может быть сложно или даже невозможно;
• Крэш может привести к потере данных пользователя, перехода данных приложения в противоречивое или некорректное состояние;
• Катастрофически ухудшается пользовательский опыт.
7
COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
НЕПРИЯТНОСТИ СЛУЧАЮТСЯ
Контроль качества не способен выявить все возможные проблемы• Разнообразие устройств;• Разнообразие операционных систем;• Разнообразие программного окружения;• Ошибки при разработке приложения;• Ошибки в сторонних библиотеках и системных API;• Ошибки в инструментарии разработки.
РАССЛЕДОВАНИЕ КРЭШЕЙ
9
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
РАССЛЕДОВАНИЕ ПРИЧИН КРЭША
Исходные данные• Описание проблемы пользователем;• Stack trace потоков приложения в момент падения;• Дамп памяти;• Логи работы приложения / breadcrumbs;• Информация об окружении и логическом состоянии приложения.
10
Stack trace — это отчет о состоянии стека вызовов приложения в конкретный момент времени, представляющий из себя список активных stack frame’ов;Его анализ позволяет точно локализовать место возникновения крэша и узнать последовательность вызовов, которая к нему привела.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
STACK TRACE
11
Memory dump — это содержимое памяти приложения в конкретный момент времени;Будучи загруженным в отладчике он позволяет изучить состояние программы в момент его создания (так, будто бы отладчик был вызван на точке останова).
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
MEMORY DUMP
12
Анализ логов поможет изучить работу упавшего приложения в течение всего времени его жизни;В отличие от других данных, логи позволяют обнаружить причину крэша даже тогда, когда момент возникновения проблемы и момент «падения» разделены во времени и не связаны цепочкой вызовов.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ЛОГИ РАБОТЫ ПРИЛОЖЕНИЯ
13
При анализе проблемы или попытке ее воспроизвести очень полезно иметь сведения об устройстве и его компонентах, версии операционной системы и драйверов, значений системных счетчиков, состоянии дисков и оперативной памяти, статуса соединения с сетью и другой информации о состоянии среды, в которой выполнялось приложение.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ИНФОРМАЦИЯ ОБ ОКРУЖЕНИИ
14
Системы аналитики отчетов о падении автоматизируют процесс сбора, обработки и группировки крэшей, возникающих на устройствах пользователей;Зачастую являются частью более общих решений по аналитике и дистрибуции приложений.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
СИСТЕМЫ АНАЛИТИКИ КРЕШЕЙ СПЕШАТ НА ПОМОЩЬ
15
Группировка похожих крэшей, которые вызваны одной и той же проблемой;Анализ возникающих проблем в динамике с уведомлением о статусе крэшей с наибольшим эффектом;Телеметрия и различные дополнительные метрики (сколько пользователей онлайн, количество новых пользователей, количество crash-free пользователей и т.д.);Удобная навигация по группам и отдельным отчетам, фильтрация и поиск;API для реализации своих сценариев анализа отчетов;Интеграция с популярными багтерекерами и системами управления проектами.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ПОЛЕЗНЫЕ ФУНКЦИИ
16
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
СХЕМА РАБОТЫ РЕШЕНИЙ ПО ОТПРАВКЕ И АНАЛИЗУ КРЕШЕЙ
Application Crash handler
Crash reporter
Analytics provider
Crash reports
Build machine
Symbols
Binary
<crash group> 0 ntdll.dll + 0xa5c24 1 myapp.exe + 0x35bae 2 myapp.exe + 0x64370 3 myapp.exe + 0x112180 4 myapp.exe + 0x1d5c70
<crash group> 0 ntdll.dll!NtOpenFile() 1 myapp.exe!read_config() [... 2 myapp.exe!read_settings() [... 3 myapp.exe!init() [myapp.cpp:43] 4 myapp.exe!main() [myapp.cpp:12]
Binary
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ
18
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ
Windows Error Reporting (Watson)• Позволяет создавать отчеты о сбоях, прикреплять к ним дампы памяти и
содержимое отдельных блоков памяти программы, дополнительные файлы и параметры;
• Работает автоматически для всех приложений, не обрабатывающих крэши самостоятельно, отправляя базовый отчет об ошибке и минидамп;
• Отчеты об ошибках приложений отправляются в службу Windows Quality Online Services, зарегистрировавшись в которой, можно получить к ним доступ.
19
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (2)
Microsoft Dev Center• Предоставляет доступ к информации о сбоях приложений из Windows Store (Windows
Universal Platform, Windows Phone 7/8);• Производит символизацию stack trace’ов, по которым группирует возникшие проблемы;• Стандратный обработчик крэшей для приложений из Windows Store срабатывает
автоматически, отправляя отчет в Microsoft.
20
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (3)
Apple Crash Report Service• Позволяет прямо из XCode просматривать отчеты о падении вашего приложения
для MacOS или iOS, которые отправили пользователи;• Символизирует stack trace и группирует отчеты по ним;• Доступная информация ограничивается stack trace’ом и небольшим количеством
сведений об устройствах и операционных системах, на которых произошел сбой;• Работает автоматически для приложений, не обрабатывающих крэши
самостоятельно.
21
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (4)
Android Market Crash Reports• Предоставляет доступ к отчетам об ошибках, которые присылают
пользователи;• Обработчик крэшей вызывается для необработанных исключений
управляемого кода, поэтому отчетов о крэшах в C++/NDK приложениях или библиотеках увидеть не удастся.
АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ
23
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ПОДДЕРЖКА ПЛАТФОРМ (ПО СОСТОЯНИЮ НА ОКТЯБРЬ 2016)
SDK NDK .NET Native .NET Native
B B
B Limited B Limited
24
Отправка отчетов как о крэшах, так и об обработанных исключениях;Включение в отчет пользовательской метаинформации;Breadcrumbs — последовательность значимых изменений в состоянии приложения или системы; многие события логируются автоматически.
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
APTELIGENT
25
Глубокий анализ и приоритезация крэшей согласно их массовости и частоте;Интегрируется с популярными багтрекерами;В отчетах предоставляет достаточно много информации о состоянии устройства и ОС в момент падения;Позволяет создавать отчеты не только при крэше, но и для обработанных исключений;В клиентской библиотеке есть собственный логгер; полученный лог прикрепляется к отчету;Есть возможность задания пользовательских параметров, которые будут добавлены в отчет;Является также системой распространения сборок приложения.
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
CRASHLYTICS
26
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
HOCKEYAPP
Поддерживает множество платформ, в т.ч. позволяет отправлять отчеты, созданные библиотекой Google Breakpad;Есть телеметрия (пользовательская активность, crash free пользователи);Позволяет прикреплять к отчетам логи, дополнительные файлы и параметры;Является также системой распространения сборок приложений;Поддерживает интеграцию с подавляющим большинством популярных багтрекеров.
27
Включайте в отчеты об ошибках только техническую информацию, которая необходима для последующего решения проблем. Никогда не логируйте идентификаторы, пин-коды, ключи, пароли, токены и прочую информацию, которой могут воспользоваться злоумышленники для несанкционированных действий от имени пользовтаеля или вашей системы;Уважайте приватность ваших пользователей и не включайте личную информацию (e-mail, номер телефона, списки контактов) в отчеты об ошибках.
COREHARD // СОВЕТЫ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ЛОГИРУЙТЕ РАЗУМНО
СПАСИБО ЗА ВНИМАНИЕ!
ЛАПИЦКИЙ АРТЁМ
Software Developer https://www.facebook.com/WargamingMinsk
ANY QUESTIONS?
wargaming.com
https://www.linkedin.com/company/wargaming-net