it-roy-ru.com

Как я могу получить журналы консоли с iOS Simulator?

Я хочу посмотреть, что происходит в iOS Simulator, если я не тестирую приложение в Xcode.

Например, если я открою ссылку в симуляторе Safari, посмотрим, что происходит в консоли, Или если я установлю веб-приложение, просмотрите ссылки, которые я нажимаю в консоли.

Как я могу это сделать?

Я хочу видеть это в Xcode или Terminal, но это не проблема, если мне нужно использовать другой бит программного обеспечения.

201
user1335015

симулятор iOS> Строка меню> Отладка> Открыть системный журнал


Старые пути:

iOS Simulator печатает свои журналы прямо на стандартный вывод, поэтому вы можете увидеть, что журналы перепутаны с системными журналами. 

Откройте Терминал и введите: tail -f /var/log/system.log

Затем запустите симулятор.

Правка:

Это перестало работать на Mavericks/Xcode 5. Теперь вы можете получить доступ к журналам симулятора в его собственной папке: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Вы можете использовать Console.app, чтобы увидеть это, или просто сделать хвост (iOS 7.0.3 64-битная например):

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

Правка 2:

Теперь они находятся в ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

247
fbernardo

Вы можете просмотреть консоль для симулятора iOS через настольный Safari. Это похоже на то, как вы используете настольный Safari для просмотра консоли для физических устройств iOS.

Всякий раз, когда симулятор работает и открыта веб-страница, в меню Safari для рабочего стола будет опция, позволяющая увидеть консоль симулятора iOS:

Разработка -> Симулятор iPhone -> название сайта

200
Ben Jackson

В симуляторе есть возможность открыть console

Debug > Open System Log

или используйте 

keyboard shortcut: ⌘/

 Simulator menu screenshot

102
Mark Bridges

iOS 8 и iOS 9

Под iOS 8 и iOS 9 это местоположение теперь:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Итак, будет работать следующее:

tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log

Значение DEVICE_CODE можно найти с помощью следующей команды консоли:

instruments -s devices
89
viteinfinite

Вы не должны полагаться на instruments -s. Официально поддерживаемым инструментом для работы с симуляторами из командной строки является xcrun simctl.

Каталог журнала для устройства можно найти с помощью xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Это всегда будет правильно, даже если местоположение меняется.

Теперь, когда все движется к os_log, проще открыть Console.app на хосте Mac. Загруженные симуляторы должны отображаться слева как источник журналов, как и физические устройства. Вы также можете запустить команды журнала в загруженном симуляторе:

# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug

# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'

# a log dump that Console.app can open
xcrun simctl spawn booted log collect

# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`

Если вы хотите использовать инструменты разработчика Safari (включая консоль JS) с веб-страницей в симуляторе : Запустите один из симуляторов, откройте Safari, затем перейдите в Safari на вашем Mac и вы увидите Симулятор в меню.

Вы можете открыть URL в симуляторе, перетащив его из адресной строки Safari в окно симулятора. Вы также можете использовать xcrun simctl openurl booted <url>.

16
russbishop

Если вы используете Swift , помните, что println будет печатать только в журнал отладки (который отображается в области отладки xCode). Если вы хотите распечатать в system.log, вы должны использовать NSLog как в старые времена.

Затем вы можете просмотреть журнал симулятора через меню «Отладка»> «Открыть системный журнал ...» (cmd + /).

15
cprcrack

хвост /var/log/system.log не работал для меня. Я нашел свои журналы с помощью Console.app. Они были в

~/Library/Logs/iOS Simulator/{version}/system.log

11
djibouti33

XCode> 6.0 И iOS> 8.0 Следующий скрипт работает, если у вас версия XCode> 8.0

Я использую приведенный ниже небольшой скрипт для привязки журналов симулятора к системной консоли.

#!/bin/sh
sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log

Вы можете передать в качестве аргумента тип симулятора, используемый в Grep. Как упомянуто в вышеупомянутых сообщениях, есть команда simctl и instruments, чтобы просмотреть тип симуляторов, доступных для использования в зависимости от версии XCode . Чтобы просмотреть список доступных устройств/симуляторов.

xcrun instruments -s

ИЛИ ЖЕ 

xcrun simctl list

Теперь вы можете передать в качестве аргумента сценария тип симулятора кода устройства OR и заменить «iPhone 6 (8.2 Simulator)» внутри grep на $ 1.

7
Gurubaran

Вы можете использовать системное Console приложение на вашем Mac. Просто выберите интересное устройство в Устройствах.

 enter image description here

0
yoAlex5

Я могу открыть журнал напрямую с помощью симулятора iOS: Debug -> Open System Log... Не уверен, когда это было введено, поэтому он может быть недоступен для более ранних версий.

0
bompf