29
ИСПОЛЬЗОВАНИЕ СИСТЕМ АНАЛИТИКИ КРЭШЕЙ ЛАПИЦКИЙ АРТЁМ [email protected]

использование систем аналитики крэшей

Embed Size (px)

Citation preview

Page 1: использование систем аналитики крэшей

ИСПОЛЬЗОВАНИЕ СИСТЕМ АНАЛИТИКИ КРЭШЕЙЛАПИЦКИЙ АРТЁМ

[email protected]

Page 2: использование систем аналитики крэшей

2

COREHARD // ВВЕДЕНИЕ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

OOPS…

Page 3: использование систем аналитики крэшей

3

Крэш — это такое состояние программы (приложения или операционной системы), в котором дальнейшее корректное её выполнение не представляется возможным.

COREHARD // ВВЕДЕНИЕ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ЧТО ТАКОЕ CRASH?

Page 4: использование систем аналитики крэшей

ОТКУДА БЕРУТСЯ КРЭШИ?

Page 5: использование систем аналитики крэшей

5

COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ПРИЧИНЫ КРЭШЕЙ ПРИЛОЖЕНИЙ

Основные причины крэшей приложений• Необработанное исключение или сигнал;• Попытка чтения (или записи) памяти по адресу, не выделенному приложению для

чтения (или записи);• Переполнение стека;• Попытка выполнить инструкцию с некорректными параметрами (деление на 0,

работа с невыровненной памятью на ARM, …);• Попытка выполнить некорректную инструкцию или инструкцию, не доступную в

текущем режиме работы процессора;• Некорректная работа с системными функциями (передача неверных параметров,

недостаточные полномочия, нехватка памяти, …), нарушение целостности системных объектов;

• Вызов std::terminate или std::abort при серьезных нарушениях логики работы приложения, после которых дальнейшее его выполнение не имеет смысла.

Page 6: использование систем аналитики крэшей

6

COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /

ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016

КРЭШИ И ПОЛЬЗОВАТЕЛИ

Для пользователя крэш – это больше чем неудобство• Внезапное завершение приводит к потере контекста работы с

приложением, восстановить который может быть сложно или даже невозможно;

• Крэш может привести к потере данных пользователя, перехода данных приложения в противоречивое или некорректное состояние;

• Катастрофически ухудшается пользовательский опыт.

Page 7: использование систем аналитики крэшей

7

COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /

ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016

НЕПРИЯТНОСТИ СЛУЧАЮТСЯ

Контроль качества не способен выявить все возможные проблемы• Разнообразие устройств;• Разнообразие операционных систем;• Разнообразие программного окружения;• Ошибки при разработке приложения;• Ошибки в сторонних библиотеках и системных API;• Ошибки в инструментарии разработки.

Page 8: использование систем аналитики крэшей

РАССЛЕДОВАНИЕ КРЭШЕЙ

Page 9: использование систем аналитики крэшей

9

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016

РАССЛЕДОВАНИЕ ПРИЧИН КРЭША

Исходные данные• Описание проблемы пользователем;• Stack trace потоков приложения в момент падения;• Дамп памяти;• Логи работы приложения / breadcrumbs;• Информация об окружении и логическом состоянии приложения.

Page 10: использование систем аналитики крэшей

10

Stack trace — это отчет о состоянии стека вызовов приложения в конкретный момент времени, представляющий из себя список активных stack frame’ов;Его анализ позволяет точно локализовать место возникновения крэша и узнать последовательность вызовов, которая к нему привела.

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016

STACK TRACE

Page 11: использование систем аналитики крэшей

11

Memory dump — это содержимое памяти приложения в конкретный момент времени;Будучи загруженным в отладчике он позволяет изучить состояние программы в момент его создания (так, будто бы отладчик был вызван на точке останова).

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016

MEMORY DUMP

Page 12: использование систем аналитики крэшей

12

Анализ логов поможет изучить работу упавшего приложения в течение всего времени его жизни;В отличие от других данных, логи позволяют обнаружить причину крэша даже тогда, когда момент возникновения проблемы и момент «падения» разделены во времени и не связаны цепочкой вызовов.

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ЛОГИ РАБОТЫ ПРИЛОЖЕНИЯ

Page 13: использование систем аналитики крэшей

13

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

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ИНФОРМАЦИЯ ОБ ОКРУЖЕНИИ

Page 14: использование систем аналитики крэшей

14

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

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

СИСТЕМЫ АНАЛИТИКИ КРЕШЕЙ СПЕШАТ НА ПОМОЩЬ

Page 15: использование систем аналитики крэшей

15

Группировка похожих крэшей, которые вызваны одной и той же проблемой;Анализ возникающих проблем в динамике с уведомлением о статусе крэшей с наибольшим эффектом;Телеметрия и различные дополнительные метрики (сколько пользователей онлайн, количество новых пользователей, количество crash-free пользователей и т.д.);Удобная навигация по группам и отдельным отчетам, фильтрация и поиск;API для реализации своих сценариев анализа отчетов;Интеграция с популярными багтерекерами и системами управления проектами.

COREHARD // РАССЛЕДОВАНИЕ КРЭША /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ПОЛЕЗНЫЕ ФУНКЦИИ

Page 16: использование систем аналитики крэшей

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

Page 17: использование систем аналитики крэшей

АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ

Page 18: использование систем аналитики крэшей

18

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ

Windows Error Reporting (Watson)• Позволяет создавать отчеты о сбоях, прикреплять к ним дампы памяти и

содержимое отдельных блоков памяти программы, дополнительные файлы и параметры;

• Работает автоматически для всех приложений, не обрабатывающих крэши самостоятельно, отправляя базовый отчет об ошибке и минидамп;

• Отчеты об ошибках приложений отправляются в службу Windows Quality Online Services, зарегистрировавшись в которой, можно получить к ним доступ.

Page 19: использование систем аналитики крэшей

19

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (2)

Microsoft Dev Center• Предоставляет доступ к информации о сбоях приложений из Windows Store (Windows

Universal Platform, Windows Phone 7/8);• Производит символизацию stack trace’ов, по которым группирует возникшие проблемы;• Стандратный обработчик крэшей для приложений из Windows Store срабатывает

автоматически, отправляя отчет в Microsoft.

Page 20: использование систем аналитики крэшей

20

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (3)

Apple Crash Report Service• Позволяет прямо из XCode просматривать отчеты о падении вашего приложения

для MacOS или iOS, которые отправили пользователи;• Символизирует stack trace и группирует отчеты по ним;• Доступная информация ограничивается stack trace’ом и небольшим количеством

сведений об устройствах и операционных системах, на которых произошел сбой;• Работает автоматически для приложений, не обрабатывающих крэши

самостоятельно.

Page 21: использование систем аналитики крэшей

21

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (4)

Android Market Crash Reports• Предоставляет доступ к отчетам об ошибках, которые присылают

пользователи;• Обработчик крэшей вызывается для необработанных исключений

управляемого кода, поэтому отчетов о крэшах в C++/NDK приложениях или библиотеках увидеть не удастся.

Page 22: использование систем аналитики крэшей

АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ

Page 23: использование систем аналитики крэшей

23

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ПОДДЕРЖКА ПЛАТФОРМ (ПО СОСТОЯНИЮ НА ОКТЯБРЬ 2016)

SDK NDK .NET Native .NET Native

B B

B Limited B Limited

Page 24: использование систем аналитики крэшей

24

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

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

APTELIGENT

Page 25: использование систем аналитики крэшей

25

Глубокий анализ и приоритезация крэшей согласно их массовости и частоте;Интегрируется с популярными багтрекерами;В отчетах предоставляет достаточно много информации о состоянии устройства и ОС в момент падения;Позволяет создавать отчеты не только при крэше, но и для обработанных исключений;В клиентской библиотеке есть собственный логгер; полученный лог прикрепляется к отчету;Есть возможность задания пользовательских параметров, которые будут добавлены в отчет;Является также системой распространения сборок приложения.

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

CRASHLYTICS

Page 26: использование систем аналитики крэшей

26

COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

HOCKEYAPP

Поддерживает множество платформ, в т.ч. позволяет отправлять отчеты, созданные библиотекой Google Breakpad;Есть телеметрия (пользовательская активность, crash free пользователи);Позволяет прикреплять к отчетам логи, дополнительные файлы и параметры;Является также системой распространения сборок приложений;Поддерживает интеграцию с подавляющим большинством популярных багтрекеров.

Page 27: использование систем аналитики крэшей

27

Включайте в отчеты об ошибках только техническую информацию, которая необходима для последующего решения проблем. Никогда не логируйте идентификаторы, пин-коды, ключи, пароли, токены и прочую информацию, которой могут воспользоваться злоумышленники для несанкционированных действий от имени пользовтаеля или вашей системы;Уважайте приватность ваших пользователей и не включайте личную информацию (e-mail, номер телефона, списки контактов) в отчеты об ошибках.

COREHARD // СОВЕТЫ /

ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016

ЛОГИРУЙТЕ РАЗУМНО

Page 28: использование систем аналитики крэшей

СПАСИБО ЗА ВНИМАНИЕ!

Page 29: использование систем аналитики крэшей

ЛАПИЦКИЙ АРТЁМ

Software Developer https://www.facebook.com/WargamingMinsk

ANY QUESTIONS?

[email protected]

wargaming.com

https://www.linkedin.com/company/wargaming-net