Как декодировать журнал 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
Другие вопросы по тегам