Как вручную символизировать журнал сбоев с помощью atos

После поиска по всему Интернету способа символизировать журналы сбоев, которые я получил от Apple, я, наконец, понял, как использовать команду atos в терминале для символизации журналов сбоев. У меня есть файл dSYM, файл .app и журналы сбоев в одной папке, и с помощью atos -arch armv7 -o APPNAME я смог ввести адреса памяти, а иногда (но довольно редко) всплывало имя метода. Честно говоря, у меня нет большого опыта работы с терминалом или журналами сбоев. Попытка символизировать журналы сбоев из организатора Xcode, к сожалению, абсолютно ничего не дала, и попытка использовать файл symbolicatecrash в содержимом пакета Xcode также не удалась. Так вот, я остался с единственным другим вариантом, о котором я знаю.

Теперь мой вопрос заключается в следующем: как сделать орлы и решки этих адресов памяти? Какие адреса я должен ввести, чтобы добраться до точки, в которой произошел сбой приложения? Я на 90% там, просто не знаю, какие адреса дадут мне ценную информацию, а какие бесполезны. Прикрепляю картинку крашлога:

введите здесь описание изображения

Любая помощь приветствуется.


person Fitzy    schedule 20.12.2012    source источник


Ответы (2)


Я предполагаю, что вы видели вопрос Stackoverflow с информацией об atos (как и я), но неправильно вычисляете адрес для помещения в atos. Глянь сюда:

отчеты о сбоях iOS: atos не работает должным образом

адрес символа = слайд + адрес стека - адрес загрузки

Используйте otool, чтобы получить адрес вашего слайда (обычно 0x001000)

otool -arch ARCHITECTURE -l "APP_BUNDLE/APP_EXECUTABLE" | grep -B 3 -A 8 -m 2 "__TEXT"

Прокрутите вниз свой журнал сбоев, чтобы получить адрес стека из раздела двоичных изображений (первый адрес в списке в разделе «Двоичные изображения»).

Затем сложите его с помощью калькулятора HEX, который поставляется с вашим Mac (используйте вид программиста). Наконец, вычтите адрес загрузки из трассировки стека в журнале сбоев (в вашем случае это выглядит как 0x00012efe).

Поместите это в atos, чтобы получить строку, которая вызывает сбой:

atos -arch armv7 -o YOURAPP.app'/'yourapp' 0xADDRESSFROMABOVE
person Matt Hudson    schedule 08.01.2013
comment
Это все еще необходимо? Документация Apple по обозначение с помощью atos означает, что вам просто нужно указать адрес загрузки с аргументом -l для atos. Например. atos -arch armv7 -o YOURAPP.app'/'yourapp' -l 0x11000 0x00012efe - person sgdesmet; 25.04.2017

Вы можете попробовать использовать мой скрипт для достижения этой цели: https://github.com/IdoTene/MacosSymbolicateCrash/blob/master/symbolicate.py

Он инкапсулирует команду atos.

Или обновленная версия: https://github.com/samrayner/MacosSymbolicateCrash/blob/master/symbolicate.py.

person IdoT    schedule 11.02.2018