Вопрос

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

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

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

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

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

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

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

0x00059f8c -[Событие отправки UIWindow:] + 108

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top