В аварийном журнале 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