Устранение неполадок Crashlytics и часто задаваемые вопросы


На этой странице представлена ​​помощь по устранению неполадок и ответы на часто задаваемые вопросы об использовании Crashlytics . Если вы не можете найти то, что ищете, или вам нужна дополнительная помощь, обратитесь в службу поддержки Firebase .

Общее устранение неполадок/часто задаваемые вопросы

Вы можете заметить два разных формата проблем, перечисленных в таблице «Проблемы» в консоли Firebase . И вы также можете заметить функцию под названием «варианты» в некоторых ваших задачах. Вот почему!

В начале 2023 года мы представили улучшенный механизм анализа для группировки событий, а также обновленный дизайн и некоторые расширенные функции для новых проблем (например, вариантов!). Подробности читайте в нашем недавнем сообщении в блоге , а основные моменты вы можете прочитать ниже.

Crashlytics анализирует все события вашего приложения (например, сбои, нефатальные события и ошибки ANR) и создает группы событий, называемые проблемами — все события в проблеме имеют общую точку сбоя.

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

Однако в этой группе событий трассировки стека, приводящие к сбою, могут быть разными. Другая трассировка стека может означать другую основную причину. Чтобы отобразить эту возможную разницу внутри проблемы, мы теперь создаем варианты внутри задач — каждый вариант представляет собой подгруппу событий в задаче, которые имеют одну и ту же точку отказа и аналогичную трассировку стека. С помощью вариантов вы можете отладить наиболее распространенные трассировки стека внутри проблемы и определить, приводят ли к сбою различные основные причины.

Вот что вы получите благодаря этим улучшениям:

  • Обновленные метаданные, отображаемые в строке проблемы.
    Теперь стало проще понимать и сортировать проблемы в вашем приложении.

  • Меньше дублирующихся проблем
    Изменение номера строки не приводит к возникновению новой проблемы.

  • Упрощенная отладка сложных проблем с различными первопричинами.
    Используйте варианты для отладки наиболее распространенных трассировок стека в задаче.

  • Более содержательные оповещения и сигналы
    Новая проблема на самом деле представляет собой новую ошибку.

  • Более мощный поиск
    Каждая проблема содержит больше метаданных, доступных для поиска, таких как тип исключения и имя пакета.

Вот как эти улучшения реализуются:

  • Когда мы получаем новые события из вашего приложения, мы проверяем, соответствуют ли они существующей проблеме.

  • Если совпадений нет, мы автоматически применим к событию наш более умный алгоритм группировки событий и создадим новую проблему с обновленным дизайном метаданных.

Это первое большое обновление, которое мы вносим в нашу группу событий. Если у вас есть отзывы или возникли какие-либо проблемы, сообщите нам об этом, отправив отчет.

Если вы не видите показатели без сбоев (например, без сбоев пользователей и сеансов) и/или оповещения о скорости, убедитесь, что вы используетеCrashlytics SDK v10.8.0+.

Если вы не видите навигационные журналы , рекомендуем проверить конфигурацию вашего приложения для Google Analytics . Убедитесь, что вы соответствуете следующим требованиям:

Чтобы загрузить dSYM вашего проекта и получить подробный вывод, проверьте следующее:

  1. Убедитесь, что фаза сборки вашего проекта содержит сценарий запуска Crashlytics , который позволяет Xcode загружать dSYM вашего проекта во время сборки (инструкции по добавлению сценария см. в разделе Инициализация Crashlytics ). После обновления проекта вызовите сбой и убедитесь, что сбой отображается на панели управления Crashlytics .

  2. Если вы видите предупреждение «Отсутствует dSYM» в консоли Firebase , проверьте Xcode, чтобы убедиться, что он правильно создает dSYM для сборки.

  3. Если Xcode правильно создает dSYM, а вы все еще видите отсутствующие dSYM, вероятно, инструмент запуска сценария зависает при загрузке dSYM. В этом случае попробуйте каждое из следующих действий:

    • Убедитесь, что вы используете последнюю версию Crashlytics .

    • Загрузите недостающие файлы dSYM вручную:

      • Вариант 1. Используйте консольную опцию «Перетащить» на вкладке dSYM , чтобы загрузить zip-архив, содержащий недостающие файлы dSYM.
      • Вариант 2. Используйте сценарий upload-symbols , чтобы загрузить недостающие файлы dSYM для указанных UUID на вкладке dSYM .
  4. Если вы по-прежнему видите отсутствующие dSYM или загрузка по-прежнему не увенчалась успехом, обратитесь в службу поддержки Firebase и обязательно приложите свои журналы.

Если трассировки стека кажутся плохо обозначенными, проверьте следующее:

  • Если в кадрах из библиотеки вашего приложения отсутствуют ссылки на код вашего приложения, убедитесь, что -fomit-frame-pointer не установлен как флаг компиляции.

  • Если вы видите несколько (Missing) фреймов для библиотеки вашего приложения, проверьте, есть ли дополнительные dSYM, указанные как отсутствующие (для затронутой версии приложения) на вкладке dSYMs Crashlytics консоли Firebase . В этом случае выполните шаг устранения неполадок «Предупреждение об отсутствии dSYM» в разделе часто задаваемых вопросов о том, что dSYM отсутствуют/не загружаются на этой странице. Обратите внимание, что загрузка этих dSYM не будет обозначать уже произошедшие сбои, но это поможет обеспечить символизацию будущих сбоев.

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

Когда участник проекта публикует заметку, она помечается адресом электронной почты его учетной записи Google. Этот адрес электронной почты вместе с заметкой виден всем участникам проекта, имеющим доступ для просмотра заметки.

Ниже описан доступ, необходимый для просмотра, записи и удаления заметок:

См. раздел Общие сведения о показателях отсутствия сбоев .

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

Когда участник проекта публикует заметку, она помечается адресом электронной почты его учетной записи Google. Этот адрес электронной почты вместе с заметкой виден всем участникам проекта, имеющим доступ для просмотра заметки.

Ниже описан доступ, необходимый для просмотра, записи и удаления заметок:

Интеграции

Если ваш проект использует Crashlytics вместе с Google Mobile Ads SDK, вполне вероятно, что генераторы отчетов о сбоях мешают регистрировать обработчики исключений. Чтобы устранить эту проблему, отключите отчеты о сбоях в Mobile Ads SDK, вызвав метод disableSDKCrashReporting .

После того как вы свяжете Crashlytics с BigQuery, новые создаваемые вами наборы данных автоматически располагаются в США, независимо от местоположения вашего проекта Firebase.

Поддержка платформы

Да, вы можете реализовать Crashlytics в проектах macOS и tvOS. Обязательно включите версию 8.9.0+ Firebase SDK для Google Analytics , чтобы при сбоях был доступ к метрикам, собранным Google Analytics (пользователи без сбоев, последняя версия, оповещения о скорости и навигационные журналы).

Теперь вы можете сообщать о сбоях для нескольких приложений в одном проекте Firebase, даже если приложения созданы для разных платформ Apple (например, iOS, tvOS и Mac Catalyst). Раньше вам нужно было разделить приложения на отдельные проекты Firebase, если они содержали один и тот же идентификатор пакета.

Регрессирующие проблемы

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

Вот пример сценария, который объясняет, как Crashlytics классифицирует проблему как регрессию:

  1. Впервые Crashlytics получает отчет о сбое Crash «A». Crashlytics открывает соответствующую проблему для этого сбоя (проблема «A»).
  2. Вы быстро исправляете эту ошибку, закрываете проблему «А», а затем выпускаете новую версию своего приложения.
  3. Crashlytics получит еще один отчет о проблеме «А» после того, как вы ее закроете.
    • Если отчет относится к версии приложения, о которой Crashlytics знал, когда вы закрыли проблему (это означает, что версия вообще отправила отчет о сбое при любом сбое), то Crashlytics не будет считать проблему регрессированной. Вопрос останется закрытым.
    • Если отчет относится к версии приложения, о которой Crashlytics не знала, когда вы закрыли проблему (это означает, что версия вообще никогда не отправляла отчет о сбое при каком- либо сбое), то Crashlytics считает, что проблема регрессировала, и повторно откроет проблему.

Когда проблема регрессирует, мы отправляем предупреждение об обнаружении регрессии и добавляем к проблеме сигнал регрессии, чтобы вы знали, что Crashlytics повторно открыла проблему. Если вы не хотите, чтобы проблема открывалась повторно из-за нашего алгоритма регрессии, «приглушите» проблему, а не закрывайте ее.

Если отчет исходит из старой версии приложения, которая вообще не отправляла никаких отчетов о сбоях, когда вы закрыли проблему, Crashlytics считает, что проблема регрессировала, и повторно откроет проблему.

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

Если вы не хотите, чтобы проблема открывалась повторно из-за нашего алгоритма регрессии, «приглушите» проблему, а не закрывайте ее.