symbolicatecrash не нравится мой файл dSYM

Я пытаюсь использовать symbolicatecrash и получаю интересные результаты. Сотрудник построил нашу сборку дистрибутива на другой машине, поэтому он отправил мне файл dSYM. После запуска файла symbolicatecrash, найденного в

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

он выполняет все функции Apple, но не мои. Проблема, похоже, в том, что он не может (или не хочет) найти файл dSYM, возможно потому, что в нем есть информация о машине моего коллеги. Когда я копирую шестнадцатеричный адрес из отчета о сбое, я могу использовать dwarfdump следующим образом:

dwarfdump --lookup 0x0001f892 --arch armv6 путь / к / MyApp.app.dSYM

Он правильно дает мне номер строки этого единственного звонка. Кроме того, symbolicatecrash может определять номера строк игры из нашего кода, но не из кода Apple. Я не знаю, почему он не видит материалов Apple, но все это заставляет меня думать, что проблема в том, чтобы найти dSYM, как упоминалось ранее.

Так. Есть ли способ просто передать путь dSYM в команду symbolicatecrash или каким-либо другим способом заставить ее работать? Потому что, серьезно, совершенно глупо создавать инструмент, который выполняет какой-то волшебный «поиск» вашего файла только для того, чтобы не найти его, потому что он этого не хочет.

Кроме того, есть идеи, почему сборка моего коллеги не отображает никаких функций Apple? И пока я здесь, что означает "+" в файле сбоя? Нравится:

0x00059f8c - [UIWindow sendEvent:] + 108


person Eli    schedule 24.02.2010    source источник


Ответы (1)


symbolicatecrash - это гигантский взлом, лучшее, что вы можете сделать, - это научиться делать то, что от вас ожидает. Или прочтите его внутренности и исправьте, но тогда вам придется исправить это для следующего обновления SDK ...

В этом случае я думаю, что ваша проблема в том, что вы не поместили файл dSYM в ту же папку, что и комплект приложений. Он должен быть точно таким, как его оставил XCode, и находиться в том месте, где его найдет прожектор. Кроме того, убедитесь, что имена в точности такие, как ожидалось - точный регистр «dSYM» важен, и я слышал, что точки не поддерживаются в имени приложения из-за ошибки.

В случае сомнений всегда используйте параметр -v, чтобы получать более подробные сообщения об ошибках.

Для двоичных файлов Apple нет информации о номерах строк, лично я очень рад получить хотя бы имена функций. Могло быть и хуже.

В «- [UIWindow sendEvent:] + 108» означает 108 байтов от начала функции. Единственная полезная интерпретация этих данных состоит в том, что если число мало, оно, вероятно, точно, если число большое, ваша символика не в порядке.

person DenNukem    schedule 03.03.2010
comment
Хороший ответ. Я просто хочу указать, что Apple, вероятно, намеренно не включает такую ​​информацию (имя файла и номер строки) в свои двоичные файлы по какой-то причине: они не хотят раскрывать дополнительную информацию о своем исходном коде. Даже если бы у нас (разработчиков) была эта информация, что мы собираемся с ней делать? Мы не можем отлаживать код Apple, поэтому знание имени файла и номера строки бесполезно. - person Roberto; 29.01.2012