На панели инструментов Crashlytics вы можете нажать на проблему и получить подробный отчет о событии. Вы можете настроить эти отчеты, чтобы лучше понять, что происходит в вашем приложении, и обстоятельства событий, о которых сообщается в Crashlytics .
Сообщайте о перехваченных и неперехваченных исключениях в Crashlytics .
Включите отчеты GWP-ASan для устранения проблем с повреждением памяти.
Настройте свое приложение для регистрации пользовательских ключей , пользовательских сообщений журнала и идентификаторов пользователей .
Автоматически получайте журналы навигации , если ваше приложение использует Firebase SDK для Google Analytics . Эти журналы дают вам видимость действий пользователя, ведущих к событию, собранному Crashlytics в вашем приложении.
Отключите автоматическую отчетность о сбоях и включите возможность добровольной отчетности для ваших пользователей. Обратите внимание, что по умолчанию Crashlytics автоматически собирает отчеты о сбоях для всех пользователей вашего приложения.
Сообщить об исключениях
Сообщить об обнаруженных исключениях
Если у вас есть ожидаемые исключения, вы можете сделать так, чтобы Crashlytics SDK сообщал о них как о нефатальных событиях . Эти события регистрируются на устройстве, а затем отправляются вместе со следующим отчетом о фатальных событиях или когда конечный пользователь перезапускает игру.
Вы можете регистрировать исключения в C#, используя следующий метод:
Crashlytics.LogException(Exception ex);
Вы можете регистрировать ожидаемые исключения в блоках try/catch вашей игры:
try { myMethodThatThrows(); } catch (Exception e) { Crashlytics.LogException(e); // handle your exception here! }
Сообщить о неперехваченных исключениях
Для неперехваченных исключений , которые не приводят к сбою игры (например, неперехваченные исключения C# в игровой логике), вы можете заставить Crashlytics SDK сообщать о них как о фатальных событиях, установив свойство Crashlytics.ReportUncaughtExceptionsAsFatal
в значение true
при инициализации Crashlytics в вашем проекте Unity . Эти события сообщаются в Crashlytics в режиме реального времени без необходимости для конечного пользователя перезапускать игру.
Сообщения об этих неперехваченных исключениях как о фатальных событиях означают, что они будут учитываться в вашей статистике пользователей, не имевших сбоев, и в оповещениях о скорости.
Обратите внимание, что собственные сбои всегда регистрируются как фатальные события . Эти события регистрируются на устройстве и затем отправляются, когда конечный пользователь перезапускает игру.
void Start() { // Since there is no try-block surrounding this call, if an exception is thrown, // it is considered unexpected. // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true` // will ensure that such cases are reported as fatals. thirdPartyMethodThatMayThrow(); }
Включайте отчеты GWP-ASan для устранения проблем с повреждением памяти
Для приложений Android, использующих IL2CPP, Crashlytics может помочь вам отладить сбои, вызванные ошибками собственной памяти, собирая отчеты GWP-ASan. Эти ошибки, связанные с памятью, могут быть связаны с повреждением памяти в вашем приложении, что является основной причиной уязвимостей безопасности приложений.
Эти данные можно просмотреть на новой вкладке «Трассировки стека памяти», нажав на сведения о проблеме на панели управления Crashlytics .
Вы также можете использовать новый сигнал и фильтр «Отчет GWP-ASan» для быстрого просмотра всех проблем с этими данными.
Вы можете получать отчеты о памяти GWP-ASan, если ваше приложение использует последнюю версию Crashlytics SDK для Unity (v10.7.0+) и явно включает GWP-ASan (требуется изменить ваш Android App Manifest ). Если в вашем приложении есть код C++, вы можете протестировать настройку GWP-ASan, используя пример собственного кода в документации Android .
Добавить пользовательские ключи
Пользовательские ключи помогают вам получить определенное состояние вашего приложения, приводящее к сбою. Вы можете связать произвольные пары ключ/значение с вашими отчетами о сбоях, а затем использовать пользовательские ключи для поиска и фильтрации отчетов о сбоях в консоли Firebase .
- На панели Crashlytics вы можете искать проблемы, соответствующие пользовательскому ключу.
- При просмотре определенной проблемы в консоли вы можете просматривать связанные с ней пользовательские ключи для каждого события (вкладка «Ключи» ) и даже фильтровать события по пользовательским ключам (меню «Фильтр» в верхней части страницы).
При многократном вызове новые значения для существующих ключей обновят значение, и при регистрации сбоя будет зафиксировано только самое последнее значение.
Crashlytics.SetCustomKey(string key, string value);
Добавить пользовательские сообщения журнала
Зарегистрированные сообщения связаны с данными о сбоях и отображаются на панели управления Firebase Crashlytics при просмотре конкретного сбоя.
Crashlytics.Log(string message);
Установить идентификаторы пользователя
Вы можете использовать идентификационный номер, токен или хэшированное значение для уникальной идентификации конечного пользователя вашего приложения без раскрытия или передачи какой-либо его личной информации. Вы также можете очистить значение, установив его в пустую строку. Это значение отображается на панели управления Firebase Crashlytics при просмотре определенного сбоя.
Crashlytics.SetUserId(string identifier);
Получить навигационные крошки
Журналы Breadcrumb дают вам лучшее понимание взаимодействий, которые пользователь имел с вашим приложением, что привело к сбою, нефатальному или событию ANR. Эти журналы могут быть полезны при попытке воспроизвести и отладить проблему.
Журналы навигации работают на базе Google Analytics, поэтому для получения журналов навигации вам необходимо включить Google Analytics для вашего проекта Firebase и добавить Firebase SDK для Google Analytics в свое приложение. После выполнения этих требований журналы навигации автоматически включаются в данные события на вкладке «Журналы» при просмотре сведений о проблеме.
Analytics SDK автоматически регистрирует событие screen_view
, которое позволяет журналам breadcrumb отображать список экранов, просмотренных до сбоя, нефатального или ANR-события. Журнал screen_view
breadcrumb содержит параметр firebase_screen_class
.
Журналы Breadcrumb также заполняются любыми пользовательскими событиями , которые вы вручную регистрируете в сеансе пользователя, включая данные параметров события. Эти данные могут помочь отобразить ряд действий пользователя, которые привели к сбою, нефатальному событию или событию ANR.
Обратите внимание, что вы можете контролировать сбор и использование данных Google Analytics , включая данные, заполняющие журналы навигации.
Включить возможность отправки отчетов
По умолчанию Crashlytics автоматически собирает отчеты о сбоях для всех пользователей вашего приложения. Вы можете предоставить пользователям больше контроля над отправляемыми ими данными, позволив им подписаться на отчеты о сбоях.
Чтобы отключить автоматический сбор только для выбранных пользователей, вызовите переопределение сбора данных Crashlytics во время выполнения. Значение переопределения сохраняется при всех последующих запусках вашего приложения, поэтому Crashlytics может автоматически собирать отчеты для этого пользователя.
Crashlytics.IsCrashlyticsCollectionEnabled = true
Если пользователь позже откажется от сбора данных, вы можете передать false
в качестве переопределяющего значения, которое будет применено при следующем запуске приложения пользователем и будет сохраняться при всех последующих запусках для этого пользователя.
Управление данными Crash Insights
Crash Insights помогает вам решать проблемы, сравнивая ваши анонимные трассировки стека с трассировками из других приложений Firebase и сообщая вам, является ли ваша проблема частью более крупной тенденции. Для многих проблем Crash Insights даже предоставляет ресурсы, которые помогут вам отладить сбой.
Crash Insights использует агрегированные данные о сбоях для определения общих тенденций стабильности. Если вы предпочитаете не делиться данными своего приложения, вы можете отказаться от Crash Insights в меню Crash Insights в верхней части списка проблем Crashlytics в консоли Firebase .