Как декодировать журнал Crash с помощью файла dSYM в iOS?
Мое приложение iOS упало. Я хотел бы прочитать журнал сбоев с файлом dSYM. Как это возможно?
3 ответа
Прежде всего, вам нужны три файла: файл dSYM, файл приложения и журнал сбоев.
Откройте X-код, в навигаторе проекта откройте папку "Продукты" и "Показать в поиске" файл приложения. Здесь вы также найдете файл dSYM. Скопируйте их в папку.
Теперь откройте терминал и перейдите к папке, в которую вы ранее скопировали два файла. Бежать: dwarfdump --uuid Application_name.app/Application_name
Вы должны получить UUID приложения. Запустите следующую команду: dwarfdump --uuid Application_name.app.dSYM
- вы снова получите UUID, который должен соответствовать ранее полученному UUID.
Откройте журнал сбоев (X Code - Органайзер - сбои) и найдите строку, где появляется заголовок "Двоичные изображения". Вот еще один UUID в первой строке, который должен снова совпадать с ранее полученным в терминале.
Теперь вы уверены, что сбой зарегистрирован в проверяемой сборке, поэтому снова откройте файл журнала сбоя, найдите раздел "Поток 0", и там должно быть две строки с именем вашего приложения и двумя адресами. Такие как:
Application_name 0x123456
Application_name 0x987654
В терминале вы должны запустить сейчас: atos -arch armv7 -o address1 address2
(address1 и address2 должны быть заменены предыдущими двумя адресами, а armv7 - адресом вашей системы - он отображается в строках, где вы получили UUID).
Удачной отладки!
РЕДАКТИРОВАТЬ: Я хотел бы упомянуть этот пост в качестве моей базы.
вдохновение
https://developer.apple.com/library/archive/technotes/tn2151/_index.html
Шаги, чтобы получить файл Dsym
- Создайте приложение iOS для архива
- Извлеките MyApp.xcarchive
- Внутри этого файла вы найдете файл dSYM.
Получить журнал сбоев вашего устройства
Вытащите файл.crash с устройства. Я обычно использую xCode для этого.
Построчный метод
atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
0x1000e4000 = address of your app's image
0x00000001000effdc = is the stripped name of the symbol you want to turn into a readable name
Про метод
Получить местоположение symbolicatecrash
исполняемый файл.
В xCode 9 нужный файл находится здесь:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Распечатайте символизированный журнал аварий на терминал
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
./symbolicatecrash -v crash_log_20_9_2018.crash myapp.app.dSYM
чтение
Хорошие инструкции для atos
здесь: Как символизировать аварийный журнал Xcode?
Способ выполнить то же самое без файла dsym здесь: https://medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883
На самом деле, вы не можете декодировать файл dSYM, но получите из него подробную информацию об ошибке 1. найдите поток аварийного завершения и адрес из файла журнала: следующим является 0x0nnn
2. найдите собственный тип кода из файла журнала: следующим является arm64
3. найдите файл dSYM (файл символов), извлеките его из.xcarchive: следующее - xx.app.dSYM
dwarfdump --lookup 0x0nnn --arch=[arm64 armv6 armv7] xx.app.dSYM