Существуют ли журналы сбоев, созданные iPhone Simulator?
Симулятор сильно падает, но не оставляет никаких следов в консоли... журнал сбоев будет полезен.
Существуют ли журналы сбоев, созданные iPhone Simulator?
Симулятор сильно падает, но не оставляет никаких следов в консоли... журнал сбоев будет полезен.
Консоль отобразит вывод 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
.
Я уверен, что вы можете увидеть это в приложении OS X Console, расположенном в утилитах. Если я ошибаюсь, не забудьте проголосовать за меня, поэтому я удаляю это.
UPDATE:
В частности (с OSX 10.11.6),
При сбое приложения в эмуляторе добавляется подпапка (с уникальным идентификатором):
~/Library/Logs/CoreSimulator
В этом случае начните с изучения stderr.log
и system.log
.
Когда сам эмулятор падает, добавляется подпапка:
~/Library/Logs/DiagnosticReports
Не путайте этот путь с помощью
/Library/Logs
(при запуске отсутствует ~
), который имеет разные отчеты о вашем mac.
Вот что-то, что сработало для меня в особом случае... Мое приложение рушилось с 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
Это намного надежнее. Всего за несколько шагов я смог найти номер строки источника и имя метода:
Журналы аварийного сбоя появятся в ~/Library/Logs/CrashReporter.
Когда Xcode получает журналы сбоев с подключенного устройства, он хранит их в подпапках ~/Library/Logs/CrashReporter/MobileDevice
Для меня это было выражением, которое я добавил в окно просмотра отладчика. Когда точка останова попадала, плохое выражение вызывало XCode segfault.