Как символизировать отчеты о сбоях Mac OSX, выпущенные Apple?
Для отчетов о сбоях iOS достаточно перетащить отчет о сбое в Организатор.
Символические отчеты о сбоях приложений iPhone
Но этот метод не работает для отчетов о сбоях Mac OSX.
Как я могу символизировать мой отчет о сбое Mac OSX?
Спасибо!!
3 ответа
Вы можете использовать команду atos, чтобы получить номер строки, в которой произошло сбой приложения.
Вот краткое руководство:
- Создайте каталог для ваших рабочих файлов
- Откройте XCode, выберите "Окно" -> "Органайзер", перейдите на вкладку "Архив" и найдите версию приложения, в которой произошел сбой.
- Щелкните правой кнопкой мыши по архиву приложения и выберите "Показать в Finder"
- Щелкните правой кнопкой мыши на.xarchive, выберите "Показать содержимое", найдите каталог AppName.dSYM и приложение и скопируйте их в рабочую папку.
- Скопируйте трассировку стека в вашу рабочую папку
- Откройте терминал и перейдите в рабочую папку. Ls должен показать YourApp.app YourApp.app.dSYM stacktrace.txt
- Откройте трассировку стека в TextEdit. Вам нужно будет найти тип кода из заголовка (системная архитектура - например, X86-64) и адреса сбоя. Поиск в потоках, чтобы найти тот, который потерпел крах (он будет говорить что-то вроде "Thread 2 Crashed"), а затем найти ваши объекты. Вам нужны два адреса (шестнадцатеричные числа) из этой строки, чтобы получить строку кода.
Как только вы получите всю информацию, вам нужно запустить в терминале следующее:
atos -o YourApp.app/Contents/MacOS/YourApp -arch x86_64 -l [адрес загрузки] [адрес]
Например, вот выдержка из трассировки стека:
Process: MyApp [228]
Path: /Applications/MyApp.app/Contents/MacOS/MyApp
Identifier: uk.co.company.app
Version: 1.0 (1)
App Item ID: 774943227
App External ID: 218062633
Code Type: X86-64 (Native)
Parent Process: launchd [154]
Responsible: MyApp [228]
User ID: 501
Date/Time: 2013-12-17 10:20:45.816 +0100
OS Version: Mac OS X 10.9 (13A603)
Report Version: 11
Anonymous UUID: 7AA662B1-7696-A2C5-AF56-9D4BA2CE9515
Crashed Thread: 2
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
<snip>
Thread 2 Crashed:
0 libsystem_kernel.dylib 0x00007fff8b95a866 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff8bf4f35c pthread_kill + 92
2 libsystem_c.dylib 0x00007fff87571bba abort + 125
3 libsystem_malloc.dylib 0x00007fff897ae093 free + 411
4 uk.co.company.app 0x0000000103580606 0x10356e000 + 75270
5 uk.co.company.app 0x00000001035803da 0x10356e000 + 74714
6 com.apple.Foundation 0x00007fff8d00970b __NSThread__main__ + 1318
7 libsystem_pthread.dylib 0x00007fff8bf4e899 _pthread_body + 138
8 libsystem_pthread.dylib 0x00007fff8bf4e72a _pthread_start + 137
9 libsystem_pthread.dylib 0x00007fff8bf52fc9 thread_start + 13
Я вижу, что "Тип кода" - это x86_64, что поток 2 аварийно завершился, и что в строке 4 мой код работал, поэтому у нас есть нужные адреса. Используя эту информацию, я запускаю следующее:
$ atos -o MyApp.app/Contents/MacOS/MyApp -arch x86_64 -l 0x10356e000 0x0000000103580606
Это возвращает:
got symbolicator for MyApp.app/Contents/MacOS/MyApp, base address 100000000
obj_free (in MyApp) (somefile.c:135)
Сообщив, что мое приложение упало в строке 135 файла somefile.c
Приведенный выше комментарий @inkjet заслуживает отдельного ответа. Он построил приложение, которое делает полную символику из вашего файла dsym и.crash.
Бесплатная альтернатива Sumbolon, которую я сделал: bch.us.to/apps/macsymbolicator - он использует atos так же, как описано Rich Able ниже. - инк 24 декабря 13 в 4:39
положить все это вместе:
скачать Mac Symbolicator здесь
Откройте XCode, выберите "Окно" -> "Органайзер", перейдите на вкладку "Архив" и найдите версию приложения, в которой произошел сбой.
Щелкните правой кнопкой мыши по архиву приложения и выберите "Показать в Finder"
Щелкните правой кнопкой мыши на.xarchive, выберите "Показать содержимое" и найдите каталог AppName.dSYM.
Перетащите файл.crash и AppName.dsym на Sumbolon
Магия случается
эта ссылка объясняет все, чтобы символизировать журнал сбоев строкой без сбоев. вам просто нужно иметь файл.dsyms, файл.app и журнал сбоев в одной папке
я оглянулся и не нашел ничего лучше этого. поэтому я публикую это, надеясь, что это поможет другим.