использование систем аналитики крэшей
-
Upload
corehardby -
Category
Technology
-
view
148 -
download
0
Transcript of использование систем аналитики крэшей
![Page 2: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/2.jpg)
2
COREHARD // ВВЕДЕНИЕ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
OOPS…
![Page 3: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/3.jpg)
3
Крэш — это такое состояние программы (приложения или операционной системы), в котором дальнейшее корректное её выполнение не представляется возможным.
COREHARD // ВВЕДЕНИЕ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ЧТО ТАКОЕ CRASH?
![Page 4: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/4.jpg)
ОТКУДА БЕРУТСЯ КРЭШИ?
![Page 5: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/5.jpg)
5
COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ПРИЧИНЫ КРЭШЕЙ ПРИЛОЖЕНИЙ
Основные причины крэшей приложений• Необработанное исключение или сигнал;• Попытка чтения (или записи) памяти по адресу, не выделенному приложению для
чтения (или записи);• Переполнение стека;• Попытка выполнить инструкцию с некорректными параметрами (деление на 0,
работа с невыровненной памятью на ARM, …);• Попытка выполнить некорректную инструкцию или инструкцию, не доступную в
текущем режиме работы процессора;• Некорректная работа с системными функциями (передача неверных параметров,
недостаточные полномочия, нехватка памяти, …), нарушение целостности системных объектов;
• Вызов std::terminate или std::abort при серьезных нарушениях логики работы приложения, после которых дальнейшее его выполнение не имеет смысла.
![Page 6: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/6.jpg)
6
COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
КРЭШИ И ПОЛЬЗОВАТЕЛИ
Для пользователя крэш – это больше чем неудобство• Внезапное завершение приводит к потере контекста работы с
приложением, восстановить который может быть сложно или даже невозможно;
• Крэш может привести к потере данных пользователя, перехода данных приложения в противоречивое или некорректное состояние;
• Катастрофически ухудшается пользовательский опыт.
![Page 7: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/7.jpg)
7
COREHARD // ОТКУДА БЕРУТСЯ КРЭШИ /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
НЕПРИЯТНОСТИ СЛУЧАЮТСЯ
Контроль качества не способен выявить все возможные проблемы• Разнообразие устройств;• Разнообразие операционных систем;• Разнообразие программного окружения;• Ошибки при разработке приложения;• Ошибки в сторонних библиотеках и системных API;• Ошибки в инструментарии разработки.
![Page 8: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/8.jpg)
РАССЛЕДОВАНИЕ КРЭШЕЙ
![Page 9: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/9.jpg)
9
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
РАССЛЕДОВАНИЕ ПРИЧИН КРЭША
Исходные данные• Описание проблемы пользователем;• Stack trace потоков приложения в момент падения;• Дамп памяти;• Логи работы приложения / breadcrumbs;• Информация об окружении и логическом состоянии приложения.
![Page 10: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/10.jpg)
10
Stack trace — это отчет о состоянии стека вызовов приложения в конкретный момент времени, представляющий из себя список активных stack frame’ов;Его анализ позволяет точно локализовать место возникновения крэша и узнать последовательность вызовов, которая к нему привела.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
STACK TRACE
![Page 11: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/11.jpg)
11
Memory dump — это содержимое памяти приложения в конкретный момент времени;Будучи загруженным в отладчике он позволяет изучить состояние программы в момент его создания (так, будто бы отладчик был вызван на точке останова).
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD // 22.10.2016
MEMORY DUMP
![Page 12: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/12.jpg)
12
Анализ логов поможет изучить работу упавшего приложения в течение всего времени его жизни;В отличие от других данных, логи позволяют обнаружить причину крэша даже тогда, когда момент возникновения проблемы и момент «падения» разделены во времени и не связаны цепочкой вызовов.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ЛОГИ РАБОТЫ ПРИЛОЖЕНИЯ
![Page 13: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/13.jpg)
13
При анализе проблемы или попытке ее воспроизвести очень полезно иметь сведения об устройстве и его компонентах, версии операционной системы и драйверов, значений системных счетчиков, состоянии дисков и оперативной памяти, статуса соединения с сетью и другой информации о состоянии среды, в которой выполнялось приложение.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ИНФОРМАЦИЯ ОБ ОКРУЖЕНИИ
![Page 14: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/14.jpg)
14
Системы аналитики отчетов о падении автоматизируют процесс сбора, обработки и группировки крэшей, возникающих на устройствах пользователей;Зачастую являются частью более общих решений по аналитике и дистрибуции приложений.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
СИСТЕМЫ АНАЛИТИКИ КРЕШЕЙ СПЕШАТ НА ПОМОЩЬ
![Page 15: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/15.jpg)
15
Группировка похожих крэшей, которые вызваны одной и той же проблемой;Анализ возникающих проблем в динамике с уведомлением о статусе крэшей с наибольшим эффектом;Телеметрия и различные дополнительные метрики (сколько пользователей онлайн, количество новых пользователей, количество crash-free пользователей и т.д.);Удобная навигация по группам и отдельным отчетам, фильтрация и поиск;API для реализации своих сценариев анализа отчетов;Интеграция с популярными багтерекерами и системами управления проектами.
COREHARD // РАССЛЕДОВАНИЕ КРЭША /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ПОЛЕЗНЫЕ ФУНКЦИИ
![Page 16: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/16.jpg)
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: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/17.jpg)
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ
![Page 18: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/18.jpg)
18
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ
Windows Error Reporting (Watson)• Позволяет создавать отчеты о сбоях, прикреплять к ним дампы памяти и
содержимое отдельных блоков памяти программы, дополнительные файлы и параметры;
• Работает автоматически для всех приложений, не обрабатывающих крэши самостоятельно, отправляя базовый отчет об ошибке и минидамп;
• Отчеты об ошибках приложений отправляются в службу Windows Quality Online Services, зарегистрировавшись в которой, можно получить к ним доступ.
![Page 19: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/19.jpg)
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: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/20.jpg)
20
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (3)
Apple Crash Report Service• Позволяет прямо из XCode просматривать отчеты о падении вашего приложения
для MacOS или iOS, которые отправили пользователи;• Символизирует stack trace и группирует отчеты по ним;• Доступная информация ограничивается stack trace’ом и небольшим количеством
сведений об устройствах и операционных системах, на которых произошел сбой;• Работает автоматически для приложений, не обрабатывающих крэши
самостоятельно.
![Page 21: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/21.jpg)
21
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ (4)
Android Market Crash Reports• Предоставляет доступ к отчетам об ошибках, которые присылают
пользователи;• Обработчик крэшей вызывается для необработанных исключений
управляемого кода, поэтому отчетов о крэшах в C++/NDK приложениях или библиотеках увидеть не удастся.
![Page 22: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/22.jpg)
АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ
![Page 23: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/23.jpg)
23
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ПОДДЕРЖКА ПЛАТФОРМ (ПО СОСТОЯНИЮ НА ОКТЯБРЬ 2016)
SDK NDK .NET Native .NET Native
B B
B Limited B Limited
![Page 24: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/24.jpg)
24
Отправка отчетов как о крэшах, так и об обработанных исключениях;Включение в отчет пользовательской метаинформации;Breadcrumbs — последовательность значимых изменений в состоянии приложения или системы; многие события логируются автоматически.
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
APTELIGENT
![Page 25: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/25.jpg)
25
Глубокий анализ и приоритезация крэшей согласно их массовости и частоте;Интегрируется с популярными багтрекерами;В отчетах предоставляет достаточно много информации о состоянии устройства и ОС в момент падения;Позволяет создавать отчеты не только при крэше, но и для обработанных исключений;В клиентской библиотеке есть собственный логгер; полученный лог прикрепляется к отчету;Есть возможность задания пользовательских параметров, которые будут добавлены в отчет;Является также системой распространения сборок приложения.
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ СТОРОННИХ РАЗРАБОТЧИКОВ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
CRASHLYTICS
![Page 26: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/26.jpg)
26
COREHARD // АНАЛИТИКА КРЭШЕЙ ОТ ПЛАТФОРМОДЕРЖАТЕЛЕЙ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
HOCKEYAPP
Поддерживает множество платформ, в т.ч. позволяет отправлять отчеты, созданные библиотекой Google Breakpad;Есть телеметрия (пользовательская активность, crash free пользователи);Позволяет прикреплять к отчетам логи, дополнительные файлы и параметры;Является также системой распространения сборок приложений;Поддерживает интеграцию с подавляющим большинством популярных багтрекеров.
![Page 27: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/27.jpg)
27
Включайте в отчеты об ошибках только техническую информацию, которая необходима для последующего решения проблем. Никогда не логируйте идентификаторы, пин-коды, ключи, пароли, токены и прочую информацию, которой могут воспользоваться злоумышленники для несанкционированных действий от имени пользовтаеля или вашей системы;Уважайте приватность ваших пользователей и не включайте личную информацию (e-mail, номер телефона, списки контактов) в отчеты об ошибках.
COREHARD // СОВЕТЫ /
ЛАПИЦКИЙ АРТЁМ // COREHARD / 22.10.2016
ЛОГИРУЙТЕ РАЗУМНО
![Page 28: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/28.jpg)
СПАСИБО ЗА ВНИМАНИЕ!
![Page 29: использование систем аналитики крэшей](https://reader035.fdocument.pub/reader035/viewer/2022062905/586fb2661a28abe57d8b6877/html5/thumbnails/29.jpg)
ЛАПИЦКИЙ АРТЁМ
Software Developer https://www.facebook.com/WargamingMinsk
ANY QUESTIONS?
wargaming.com
https://www.linkedin.com/company/wargaming-net