Как символизировать отчет о сбое приложения Mac OS X, которое пользователь отправил мне по электронной почте?

Я работаю над приложением, которое я отправил нескольким бета-тестерам. Всего за несколько минут после запуска приложения пользователь получил сбой. Когда появилось окно с сообщением о том, что приложение разбилось, он скопировал весь текст в разделе "подробности" и отправил его мне по электронной почте. Я сохранил текст в текстовом файле и дал ему .расширение crash, которое заставляет его открываться консолью, как обычный отчет о сбоях, поэтому я думаю, что у меня есть расширение (но, возможно, нет). Версию я послал был построенный Xcode с опцией архива, чтобы Xcode знал, где приложение и .dSYM являются. Я знаю, что с приложениями iPhone вы можете перетащить отчет о сбоях в органайзер, и Xcode будет символизировать его для вас. Я не могу найти нигде, что будет принимать отчет о сбоях Mac. Я посмотрел на atos но он говорит о местоположениях памяти, включая местоположение приложения, и я не вижу эту информацию, указанную в отчете, который у меня есть. Глядя на отчет о сбоях raw, похоже, что контроллер вида был выпустили рано, но я не могу сказать, было ли это причиной или симптомом. Мой реальный вопрос: есть ли способ, чтобы Xcode символизировал отчет или инструмент, который я могу просто передать .dSYM файл, приложение, и отчет и вернуть symbolicated отчет? Я просмотрел весь Google, но все, что я нашел (кроме ранее упомянутых man-страниц для atos) о symbolicating отчеты iPhone, а не Мак ОС Х из них.

3 ответов


или как в ответе https://stackoverflow.com/a/18354072/317461

поместите свою сборку выпуска и ваш .dSYM файл в том же каталоге и открыть терминал

$cd directory
$lldb MyApp.app
(lldb) image lookup -v --address 0x00085f3c

У нас была та же проблема с нашим приложением, и я символизировал отчеты о сбоях вручную строка за строкой с atos.

Теперь я изменил сценарий symbolicate Apple, чтобы он работал с приложениями Mac и отчетами о сбоях из PLCrashReporter.

https://github.com/lksnmnn/Symbolicate-CrashReports

как использовать:

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

  1. отчет о крушении:отчет.crash
  2. файл dSYM вашего приложения:MyApp.dSYM
  3. папка исполняемого файла / приложения вашего приложения:MyApp.app
  4. улучшение symbolicate скрипт: symbolicatecrash

Теперь перейдите в командную строку (терминал) и сделайте следующее:

# set the developer directory
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

# Now run the script
/Path/To/symbolicatecrash /Path/To/report.crash > /Path/To/readable_report.crash

# Use -v for verbose logging.

скрипт найдет ваш dSYM и ваш исполняемый файл и symbolicates сколько это банки. Теперь вы найдете свой symbolicated отчета в указанный выходной файл readable_report.crash

параметры построения:

для правильных отчетов и символов установите следующие настройки сборки:

Strip Debug Symbols During Copy: Yes
Strip Style: All Symbols
Strip Linked Product: Yes

Edit: улучшен ответ, чтобы он согласовывался с политикой ответа переполнения стека.


вы можете использовать GDB для Symbolication, поставить вашу сборку и ваш .файл dSYM в том же каталоге открыть терминал

$ cd directory
$ gdb MyApp.app
(gdb) info line *0x00085f3c