Atos не может получить символы из dSYM архивированного приложения

У меня есть отчет о сбоях от BugSense, поэтому у меня есть информация о местоположении сбоев в памяти, но они не являются символами. Также Bug Sense не отправляет традиционные отчеты о сбоях, но все равно дает мне багтрею. Поэтому я пытаюсь использовать Atos, чтобы получить точное местоположение моих сбоев. Я архивировал приложение в XCode 4 и использовал эту версию для отправки в хранилище приложений, поэтому у меня есть файл dSYM. Я запустил следующий код:

atos -arch armv7 -o MyApp.app.dSYM 0x001057e9

Однако, вместо получения правильного вывода, я получаю сообщение об ошибке:

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7

Любые предложения относительно того, почему это может произойти? Я не отделяю символы отладки от приложения.

Ответ 1

Чтобы правильно получить символы из файла архивированного приложения dSYM и получить полезную информацию из отчетов об ошибках BugSense (или любых других отчетов о сбоях):

  • Скопировать трассировку стека из BugSense в TextEdit или любой другой текстовый редактор. Не забудьте использовать значок "буфер обмена", а не просто копировать текст. В противном случае вы не получите фактических мест памяти трассировки стека, которые необходимы для поиска ссылок с помощью atos и символики трассировки стека.
  • Откройте XCode и перейдите в Организатор.
  • Найдите свой архив и щелкните его правой кнопкой мыши, откройте его в поисковике.
  • Перейдите в каталог архива, обычно ~/Library/Developer/XCode/Archives/YYYY-MM-DD/
  • Перейдите в специальный архив, а затем папку dSYMs
  • Вы увидите файл MyApp.app.dSYM, и вы можете подумать, что это файл, который я должен запустить atos против! Это неверно. На самом деле это еще один пакет! cd в этот пакет, в папку: MyApp.app.dSYM/Contents/Resources/DWARF, и вы найдете другой файл, просто называемый MyApp. Это фактический файл dSYM.
  • Запустите atos -arch armv7 -o MyApp 0x0000000 (или любой другой адрес памяти), чтобы найти местоположение вашей ошибки, или просто atos -arch armv7 -o MyApp для входа в интерактивный режим.

Ответ 2

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