Как символизировать отчеты о сбоях Mac OSX, выпущенные Apple? - PullRequest
14 голосов
/ 30 апреля 2011

Для отчетов о сбоях iOS достаточно перетащить отчет о сбое в Органайзер.

Символические отчеты о сбоях приложений iPhone

Но этот метод не 'работать с отчетами о сбоях Mac OSX.

Как обозначить отчет о сбое Mac OSX?

Спасибо !!

Ответы [ 3 ]

34 голосов
/ 20 декабря 2013

Вы можете использовать команду atos, чтобы получить номер строки, в которой произошло сбой приложения.

Вот краткое руководство:

  1. Создайте каталог для ваших рабочих файлов
  2. Откройте XCode, выберите «Окно» -> «Органайзер», перейдите на вкладку «Архив» и найдите версию приложения, в которой произошел сбой.
  3. Щелкните правой кнопкой мыши архив приложения и выберите «Показать в Finder»
  4. Щелкните правой кнопкой мыши файл .xarchive, выберите «Показать содержимое», найдите каталог AppName.dSYM и приложение и скопируйте их в рабочую папку
  5. Скопируйте трассировку стека в рабочую папку
  6. Откройте терминал и перейдите в рабочую папку.ЛС должен показать YourApp.app YourApp.app.dSYM stacktrace.txt
  7. Открыть трассировку стека в TextEdit.Вам нужно будет найти тип кода из заголовка (системная архитектура - например, X86-64) и адреса сбоя.Поиск по потокам, чтобы найти тот, который потерпел крах (он будет говорить что-то вроде "Thread 2 Crashed"), а затем найти ваши объекты.Вам нужны два адреса (шестнадцатеричные числа) из этой строки, чтобы получить строку кода.
  8. Как только вы получите всю информацию, вам нужно запустить в терминале следующее:

    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

12 голосов
/ 02 апреля 2015
Комментарий

@ inkjet выше заслуживает отдельного ответа. Он создал приложение, которое делает полную символику из вашего файла dsym и .crash.

Бесплатная альтернатива Sumbolon, которую я сделал: bch.us.to/apps/macsymbolicator - он использует atos так же, как описано Rich Able ниже - вкладка 24 декабря 13 года в 4:39

собирая все вместе:

  1. скачать Mac Symbolicator с здесь

  2. Откройте Xcode, выберите Window-> Organizer, перейдите на вкладку Archive и найдите версия вашего приложения, в которой произошел сбой.

  3. Щелкните правой кнопкой мыши архив приложения и выберите «Показать в Finder»

  4. Щелкните правой кнопкой мыши на .xarchive, выберите «Показать содержимое» и найдите Каталог AppName.dSYM

  5. Перетащите файл .crash и AppName.dsym на Sumbolon

  6. Магия случается

0 голосов
/ 08 декабря 2016

эта ссылка

эта ссылка объясняет все, чтобы символизировать журнал сбоев со строкой без сбоев.вам просто нужно иметь файл .dsyms, файл .app и журнал сбоя в одной папке

Я осмотрелся и не нашел ничего лучше этого.поэтому я публикую это, надеясь, что это поможет другим.

...