Журнал сбоев, созданный iPhone Simulator?

Существуют ли журналы сбоев, созданные iPhone Simulator?

Симулятор сильно падает, но не оставляет никаких следов в консоли... журнал сбоев будет полезен.

Ответ 1

Консоль отобразит вывод NSLog() из приложения, запущенного в симуляторе. Журналы сбоев сохраняются в файле.

Я нашел некоторые в своем домашнем каталоге в разделе

~/Library/Logs/DiagnosticReports/

У них есть расширение файла .crash

Что-то, что я еще не понял, как заставить их генерировать, даже если отладчик захватывает сигнал EXC_BAD_ACCESS.


Обновление

В настоящее время (OSX 10.11.6), журналы .crash в ~/Library/Logs/DiagnosticReports, являются, когда сам эмулятор падает. Журналы для сбоя приложения (но эмулятор устройства все еще работает нормально):

~/Library/Logs/CoreSimulator

В случае сбоя есть подпапка с уникальным идентификатором. Сортируйте по дате, чтобы ваш недавний сбой был первой подпапкой. Внутри этого, начните с просмотра stderr.log и system.log.

Также непосредственно под CoreSimulator см. CoreSimulator.log и Simulator.log.

Ответ 2

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


UPDATE:

В частности (с OSX 10.11.6),

При сбое приложения в эмуляторе добавляется подпапка (с уникальным идентификатором):

~/Library/Logs/CoreSimulator

В этом случае начните с изучения stderr.log и system.log.

Когда сам эмулятор падает, добавляется подпапка:

~/Library/Logs/DiagnosticReports

Не путайте этот путь с помощью

/Library/Logs

(при запуске отсутствует ~), который имеет разные отчеты о вашем mac.

Ответ 3

Вот что-то, что сработало для меня в особом случае... Мое приложение рушилось с SIGKILL, когда оно прекратилось. Я увижу исключение в main.m в течение нескольких секунд, а затем приложение завершит завершение - таким образом, нет возможности получить обратную трассировку.

Я много искал "где симулятор хранит журналы сбоев" и так и не смог найти ответ. Однако следующий трюк оказался весьма удобным, и я смог захватить журнал сбоев на лету:

В принципе, откройте /Applications/Utilities/CrashReporterPrefs.app и измените настройку на "Разработчик". Это приведет к тому, что CrashReporter отобразит всплывающее окно с журналом сбоев после сбоя приложения.

Я нашел это в разделе "Просмотр консоли iOS Simulator Console and Crash Logs" в этом документе от Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application.html

Ответ 4

Это намного надежнее. Всего за несколько шагов я смог найти номер строки источника и имя метода:

  • cd к директории с файлами .app и .dSYM
  • run/Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
  • установить печать asm-demangle на
  • установить символ печати-filename на
  • p/a 0 × 00015c64 → адрес, полученный путем открытия журнала сбоев в приложении "Консоль" или просто дважды щелкнув файл .crash.

Ответ 5

Журналы аварийного сбоя появятся в ~/Library/Logs/CrashReporter.

  • Если программа симулятора iPhone выйдет из строя (не приложение iPhone, работающее в симуляторе), тогда появится запись для iPhoneSimulator.
  • Если приложение iPhone в симуляторе выйдет из строя, появится журнал сбоев с отображаемым именем приложения.

Когда Xcode получает журналы сбоев с подключенного устройства, он хранит их в подпапках ~/Library/Logs/CrashReporter/MobileDevice

Ответ 6

Для меня это было выражением, которое я добавил в окно просмотра отладчика. Когда точка останова попадала, плохое выражение вызывало XCode segfault.