Символизация

Символизация — это процесс преобразования адресов памяти в понятные имена функций и строк кода. В этом разделе объясняется, как происходит символизация в зависимости от наличия дебаггера и загруженных символов.

Терминология

  • Дебажное приложение – приложение, включающее debug-символы (эти символы встроены в приложение).
  • Загруженные символы – файлы dSYM, которые были загружены на сервер с помощью плагина для Fastlane или bash-скрипта. Эти файлы содержат информацию, необходимую для символизации.

Символизация сбоев (Crashes)

  • Если приложение дебажное: символизация происходит на основе встроенных debug-символов.
  • Если debug-символов нет: символизация производится на основе загруженных символов dSYM, если они доступны. Если загруженные символы отсутствуют, символизация может быть частичной или невозможной.

Символизация NON_FATAL-ов

Для символизации NON_FATAL-ов важно наличие дебаггера. В зависимости от значения поля traceType, символизация может происходить следующим образом:

  • traceType == .current:

    • Под дебаггером: символизация выполняется аналогично символизации сбоев — используются debug-символы, если они есть, иначе используются загруженные символы dSYM.
    • Без дебаггера: символизация производится на основе загруженных символов dSYM, если они доступны. В противном случае символизация может быть частичной или невозможной.
  • traceType == .custom (с массивом символов):

    • Под дебаггером: символизация осуществляется на основе предоставленного массива символов. Эти символы имеют приоритет перед загруженными символами. Если их нет, используются загруженные символы dSYM.
    • Без дебаггера: массив символов игнорируется. Символизация будет производиться на основе загруженных символов dSYM, если они доступны. Если загруженные символы отсутствуют, символизация может быть частичной или невозможной.