symbolicatecrash не нравится мой файл dSYM - PullRequest
3 голосов
/ 24 февраля 2010

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

/ Разработчик / Платформы / iPhoneOS.platform / Разработчик / Library / PrivateFrameworks / DTDeviceKit.framework / Версии / A / Ресурсы / symbolicatecrash

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

dwarfdump --lookup 0x0001f892 - путь к архиву armv6 / в / MyApp.app.dSYM

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

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

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

0x00059f8c - [UIWindow sendEvent:] + 108

1 Ответ

6 голосов
/ 03 марта 2010

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

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

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

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

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

...