Аварийный журнал iTunesConnect частично символизируется;не показывает номера строк - PullRequest
5 голосов
/ 03 февраля 2011

В аварийном журнале iTunesConnect для приложения, созданного в XCode 3.2.5, указаны имена методов, но не номера строк. Например, в кратком отчете о сбое, который я вставил ниже, он показывает это:

0x000f5ef8 -[MyTableViewController dealloc] + 120

Здесь есть две вещи, которые меня озадачивают, и я хотел бы кое-что понять. Во-первых, необработанный файл .crash, поступающий из iTunesConnect, уже частично символизирован: он показывает имя класса и метода, но не файл исходного кода и номер строки. Я ожидал бы, что необработанный аварийный журнал iTunesConnect покажет просто шестнадцатеричные адреса. Насколько я понимаю, только однажды я загружаю журнал сбоев в свою локальную систему и явно связываю его, используя соответствующий инструмент (XCode Organizer, symbolicatecrash, atos, команда gdb x / i и т. Д.), А также точные двоичные файлы приложения и файлы dSYM ( те, которые имеют соответствующий UUID), я увижу полные символы класса, метода, файла исходного кода и номера строки. Даже когда я загружаю и просматриваю журнал сбоев в окне Windows, он кажется частично символизированным. Я обеспокоен тем, что мой двоичный файл дистрибутива должен включать некоторые символы отладки, чтобы эта информация отображалась в необработанном журнале аварий, несмотря на то, что параметр "Strip Linked Project" был установлен в его целевых настройках распространения. Любое понимание здесь было бы здорово.

Второе, что озадачивает меня и вызывает у меня более непосредственную обеспокоенность в связи с устранением этого громкого сбоя, - это дело компенсации. Я очень тщательно обнаружил двоичный файл dSYM и приложения с соответствующим UUID, поместил их в свой домашний каталог, чтобы они могли быть найдены Spotlight и др., И что бы я ни делал, я не могу преобразовать это смещение [MyTableViewController dealloc] + 120 в файл исходного кода (который мне известен как MyTableViewController.m) и номер строки. Я попробовал следующие приемы с необработанным файлом iTunesConnect .crash:

  • XCode Organizer: его «символика» не влияет на изменения в аварийном журнале - это то же самое.
  • symbolicatecrash: В подробном режиме он ни на что не жалуется, и выходной аварийный журнал тот же
  • gdb: Использование того же параметра gdb и -arch, который XCode 3.2.5 использует для создания сборки дистрибутива, и загрузки в соответствующие двоичные файлы приложения и символы dSYM для этого поста , gdb 'x / i Команды 'и' info line * 'говорят мне, что [MyTableViewController dealloc] + 120 соответствует совершенно не связанному фрагменту нашей кодовой базы в совершенно другом файле - даже файле .h! Погоня за диким гусем.

Что-то здесь не так. Даже несмотря на обеспечение одинакового UUID в отчете о сбое, двоичном файле приложения и файле dSYM ... ни один из этих инструментов не может привести к фактическому номеру строки, и выполнение этого с помощью низкоуровневого способа приводит меня к безумной погоне за погоней. Знание точного номера строки имеет решающее значение для исправления этого, потому что мы не можем воспроизвести эту аварию на месте, поэтому мы летим вслепую здесь. Это выглядит как простой перевыпущенный объект, но не ясно, какой именно это объект, и мы не можем определить из контекста. Мне интересно, есть ли какой-то незаконно присвоенный параметр сборки XCode, который каким-то образом нарушает процесс символизации.

Спасибо за ваше время!

Далее следует сокращенный необработанный журнал .crash из iTunesConnect.

Incident Identifier: 09EAE058-7D55-4AE5-947A-17280FB0211A
Hardware Model:      iPhone3,1
Process:         MyApp [1895]
Path:            /var/mobile/Applications/B4B872EF-CB0D-41D7-A7B5-435ADE479D0A/MyApp.app/MyApp
Identifier:      MyApp
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2011-01-24 14:06:32.941 -0500
OS Version:      iPhone OS 4.2.1 (8C148)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xd0000000
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x33479466 objc_msgSend + 18
1   MyApp                       0x000f5ef8 -[MyTableViewController dealloc] + 120
2   CoreFoundation                  0x33a26f74 -[NSObject(NSObject) release]
3   libobjc.A.dylib                 0x3347a812 objc_setProperty
4   UIKit                           0x320bb4a0 -[UINavigationController setDisappearingViewController:]
5   UIKit                           0x320bb478 -[UINavigationController _clearLastOperation]
xx SNIP xx
23  MyApp                       0x00014eac main + 36
24  MyApp                       0x0000b324 start + 44

XX SNIP xx

Binary Images:
    0x1000 -   0x1e3fff +MyApp armv7  <5570f8eee3bc11647732c12f96fe9553> /var/mobile/Applications/B4B872EF-CB0D-41D7-A7B5-435ADE479D0A/MyApp.app/MyApp

1 Ответ

0 голосов
/ 27 марта 2011

У меня были похожие проблемы с освобождением объекта, который не был сохранен или находился в пуле авто-релиза, и, следовательно, был освобожден дважды.Чаще всего я получаю сбой для местоположения, которое находится внутри фреймворка / iOS, но было вызвано отсутствием надлежащего управления памятью.Я не говорю, что это происходит здесь, но я столкнулся с подобной ошибкой.

...