Ответ
Символизация — это процесс преобразования сырых адресов памяти из лога аварийного завершения (Crash Log) в читаемые имена символов (названия функций, классов, строк кода). Без нее лог содержит только шестнадцатеричные числа, что делает анализ невозможным.
Для символизации необходимы:
- Сам лог краша (стек вызовов с адресами).
- dSYM-файл (Debug Symbols File), уникальный для каждой сборки. Он является ключом для сопоставления адресов и символов.
Как выполнить символизацию вручную с помощью atos:
# Формат команды:
# atos -o <Путь_к_исполняемому_файлу_в_dSYM> -arch <Архитектура> <Адрес_в_логе>
atos -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp
-arch arm64
0x00000001000abcde
# Вывод: -[ViewController viewDidLoad] (in MyApp) (ViewController.swift:25)
Где найти dSYM-файлы?
- В архиве Xcode: Window → Organizer → Archives.
- Убедитесь, что в настройках сборки включено: Build Settings → Debug Information Format =
DWARF with dSYM File.
Автоматическая символизация:
- Xcode Organizer: Загружает краши с устройств пользователей, если доступны dSYM.
- Сервисы (Crashlytics, Sentry): Автоматически символизируют краши при загрузке dSYM.
Важно: dSYM-файлы критически важны и должны храниться для каждой сборки, опубликованной в App Store или TestFlight. Без них символизация крашей от пользователей будет невозможна.