iphone: Как сделать символическое сообщение о сбое? - PullRequest
0 голосов
/ 10 августа 2011

В моем приложении я получил отчет о сбое

Exception Type:  EXC_BAD_ACCESS (SIGBUS)

Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000

Crashed Thread:  7

In Thread 7 :


Thread 7 Crashed:

0   CoreFoundation                  0x3728ba96 0x37278000 + 80534

1   CFNetwork                       0x36617b84 0x36616000 + 7044

2   CFNetwork                       0x36617af6 0x36616000 + 6902

3   MusicBandApp                    0x0000bbfc 0x1000 + 44028

4   MusicBandApp                    0x0000b740 0x1000 + 42816

5   Foundation                      0x33b88382 0x33b6b000 + 119682

6   Foundation                      0x33bfa5c6 0x33b6b000 + 587206

7   libsystem_c.dylib               0x3579530a 0x35762000 + 209674

8   libsystem_c.dylib               0x35796bb4 0x35762000 + 215988

, но не может показать конкретное имя файла сбоя и номер строки.

Как можно объединить этот отчет о сбое.

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Нам нужен файл с именем symbolitecrash для обработки этого файла. Этот файл может находиться в / Разработчик / Платформы / iPhoneOS.platform / Разработчик / Библиотека / PrivateFrameworks / DTDeviceKit.framework / Версии / A / Ресурсы

  1. Открыть Терминал .

  2. Копирование symbolitecrash файла в папку по умолчанию, отображаемую при открытии терминала.

    например. Окно терминала: -

    Последний вход в систему: ср 22 июн 15:28:21 на ttys000 UserMM: ~ пользователь $

    Здесь местоположением по умолчанию является каталог "user".

  3. Запуск этого скрипта с опцией -h обеспечивает минимальную помощь:

    UserMM: ~ user $ symbolitecrash -h

    использование:

    / usr / local / bin / symbolicatecrash [-Ah] [-o] LOGFILE [SYMBOL_PATH ...]

    Символизирует сбойный LOGFILE, который может быть "-" для обозначения стандартного ввода. По умолчанию

    вся эвристика будет использоваться при попытке обозначить все адреса.

    Дополнительные файлы символов можно найти в указанных каталогах.

    Опции:

    -A Только символизировать приложение, а не библиотеки

    -o Если указано, символический журнал будет записан в OUTPUT_FILE (по умолчанию это стандартный вывод)

    -h Показать это сообщение

    -v Verbose

  4. Поместите файл .crash в то же место, куда копируется файл symbolitecrash .

  5. Чтобы добавить символы в журнал сбоев, вам нужен файл dSYM, сгенерированный компоновщиком при компиляции приложения для AppStore. Другими словами, когда вы собираете приложение для AppStore, вы должны хранить пакет dSYM в надежном месте с резервной копией Time Machine. Это очень важно. Вы должны хранить копию dSYM для каждой версии вашего приложения, когда-либо поставленной . Если у вас есть пакет, преобразование смещения кода в имена функций с номерами строк никогда не было проще:

$ symbolicatecrash MiMo_2011-06-22-143801_Anands-Ipod.crash myApp.app.dSYM> myApp_2011-06-22-143801_Anands-Ipod1.crash

myApp_2011-06-22-143801_Anands-Ipod1.crash - это новый файл аварии, созданный в том же месте.

Вот результат:

Thread 0 Crashed:
0   libobjc.A.dylib           0x300c87ec objc_msgSend + 20
1   myApp                      0x00006434 -[BoardView setSelectedPiece:] (BoardView.m                              :321)
1 голос
/ 16 ноября 2011

Я также описал, как сделать это шаг за шагом в этом посте

У меня все заработало:

Символизированный сбой http://k.minus.com/jk4X2obwZMI7j.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...