Атос не может получить символы из dSYM архивного приложения - PullRequest
32 голосов
/ 06 октября 2011

У меня есть отчет о сбое от 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

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

Ответы [ 2 ]

93 голосов
/ 08 октября 2011

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

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

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

...