iOS (iPhone, iPad, iPodTouch) просмотр терминала журнала консоли в реальном времени

123

Есть ли способ просмотреть журнал консоли в реальном времени для просмотра NSLog и других сообщений отладки в режиме реального времени, таких как adb logcat?

Арунабх Дас
источник
1
Вы хотите сказать, что вам нужен какой-то эквивалент IOS Utilities/Console.app?
BryanH 01

Ответы:

155

Решение, описанное Apple в технических вопросах и ответах QA1747 Отладка развернутых приложений iOS для Xcode 6:

  1. Выберите «Окно» -> «Устройства» в меню Xcode.
  2. Выберите устройство в левом столбце.
  3. Щелкните треугольник вверху в левом нижнем углу правой панели, чтобы отобразить консоль устройства.

Скриншот с треугольником вверх

Мариан Черный
источник
4
На мой взгляд, это самое простое решение.
Барт ван Куик,
В Xcode 6.4 я вижу кнопку «Просмотр журналов устройства», но она дает мне журналы сбоев. Я не вижу способа получить журнал консоли.
Крис Принс,
4
Я добавил снимок экрана со значком треугольника вверх.
Marián Černý
1
printзаявления не попадают в лог, только к stdout. NSLogВместо этого используйте . Или можно было бы перенаправить stdoutв файл с добавленным кодом. Сбои регистрируются и доступны с помощью кнопки «Просмотр журналов устройства».
Мариан Черны
3
Эта кнопка была удалена в xCode 9.3. Теперь у него есть кнопка «Console.app», которая имеет больше смысла.
rustyMagnet 09
79

РЕДАКТИРОВАТЬ: используйте решение @cbowns - консоль устройства совместима с iOS9 и намного проще в использовании.

Это программа с открытым исходным кодом, которая отображает системный журнал iDevice в Терминале (аналогично tail -F). Никакого взлома не требуется, вывод полностью доступен для поиска, поэтому вы можете фильтровать его, чтобы увидеть вывод только своей программы. Что особенно хорошо в этом решении, так это то, что вы можете просматривать журнал независимо от того, было ли приложение запущено в режиме отладки из XCode.

Вот как:

Загрузите двоичный файл libimobiledevice для Mac OS X из моей учетной записи github по адресу https://github.com/benvium/libimobiledevice-macosx/zipball/master

Следуйте инструкциям по установке здесь: https://github.com/benvium/libimobiledevice-macosx/blob/master/README.md

Подключите свое устройство, откройте Terminal.app и введите:

idevicesyslog

Вверх всплывает отображение системного журнала устройства в реальном времени.

Поскольку это консольное приложение, вы можете фильтровать журнал с помощью команд unix, таких как grep

Например, просмотрите все сообщения журнала из определенного приложения:

idevicesyslog | grep myappname

Взято из моего блога http://pervasivecode.blogspot.co.uk/2012/06/view-log-output-of-any-app-on-iphone-or.html

Бен Клейтон
источник
4
Похоже, это не работает с симулятором iOS. Облом. No device found, is it plugged in?
ashes999
Он не может работать на iOS10. «usbmuxd_send: Ошибка -1 при отправке: Сломана труба» Как решить?
Виктор Чой
2
Когда я запускаю idevicesys без sudo, я получаю загадочную ошибку «Не удалось запустить службу com.apple.syslog_relay». Может это зависит от того, как вы его устанавливаете или что-то в этом роде.
Bjorn Roche
Сделайте это, если это не работает для вас ...brew uninstall libimobiledevice ideviceinstaller && brew install --HEAD libimobiledevice ideviceinstaller
Акшет
77

Два варианта:

libimobiledevice можно установить через homebrew и отлично работает. Его idevicesyslogинструмент работает аналогично deviceconsole(см. Ниже) и поддерживает просмотр системного журнала вашего устройства по беспроводной сети (!)

Я уже писал об этом на Tumblr tl; dr:

brew install libimobiledevice
idevice_id --list // list available device UDIDs
idevicesyslog -u <device udid>

с устройством, подключенным через USB или доступным в локальной беспроводной сети.

С 2013 года: deviceconsole от rpetrich - гораздо менее сложное решение, чем ideviceconsole выше. Моя его вилка собирается и запускается в Xcode 5 из коробки, а действие Build установит двоичный файл /usr/local/binдля простоты использования.

В качестве дополнительной полезной информации я использую его в следующем стиле, который упрощает поиск нужного мне устройства в истории моей оболочки и удаляет ненужные >строки, которые deviceconsoleвыводятся на печать.

deviceconsole -d -u <device UDID> | uniq -u && echo "<device name>"
cbowns
источник
Спасибо за этот пост. Это именно то, что я искал. Мне не терпится добавить iOS в свой мобильный инструмент LogCat с графическим интерфейсом пользователя: github.com/yepher/LogCat
Yepher
2
Это круто - на компиляцию и запуск потребовалось 2 минуты. Это должен быть принятый ответ.
Ник Фарина
Это прекрасное решение. И просто хотел добавить, что сборник все еще работает для iOS8 (как и должно!)
Келли
1
@BugaBuga Убедитесь, что вы используете последнюю версию libimobiledevice. (Просмотр журналов по проводной и беспроводной сети работает с моим Mac на 10.11 и моим iPhone на iOS 10.2)
cbowns
1
github.com/libimobiledevice/libimobiledevice/issues/356 . Использование: brew install --HEAD libimobiledevice. Работал у меня.
rustyMagnet 09
21

Просто откройте приложение Console.appна mac osX.

Вы можете найти его в Applications> Utilities> Console.

В левой части приложения перечислены все ваши подключенные устройства.

einsA
источник
2
Это отличное решение. Я могу использовать функцию поиска, чтобы в основном "grep" журналы в реальном времени / "Сейчас" для моего устройства.
Роб
14

Попробуйте бесплатную консоль iOS . Просто скачайте, запустите, подключите свое устройство - и вуаля!

Питер Глюк
источник
1
это интересно, но это не позволяет мне выбирать, какое устройство просматривать журнал консоли, если у меня несколько подключенных к Mac.
leolobato
настолько прост и отлично работает на iOS 12, я разочарован тем, что знаю, насколько простым должно быть ведение журнала для разработчика, и в итоге оказался здесь. Спасибо, Питер
FreeAppl3
почему бы и нет Console.app[который изначально поставляется с macOS]?
rustyMagnet
6

Это может быть то, что вы ищете: Xcode Organizer

BryanH
источник
Да ... но по какой-то причине консоль в Xcode Organizer работает менее в реальном времени, потому что она находится внутри окна графического интерфейса. Я надеялся найти способ вызвать оболочку на устройстве напрямую в tail -f <logfilename>
Арунабх Дас 02
Вы можете установить оболочку на устройство только в том случае, если оно взломано.
progrmr 02
Спасибо, progrmr. Хочу принять ваш ответ как правильный. Не могли бы вы также разместить какие-либо ссылки на HowTo по получению оболочки на взломанном устройстве? Спасибо!!
Арунабх Дас 02
@ArunabhDas Пожалуйста, подумайте об изменении принятого ответа на ответ idevicesyslog от Бена Клейтона. Его решение было именно тем, что я искал для отладки покупок в приложении с помощью приложения iOS с использованием платформы CoronaSDK. Организатор Xcode был медленным и громоздким для просмотра информации журнала.
Энтони Ф
5

устройство> вывод терминала находится в приложении конфигурации iPhone

здесь: http://support.apple.com/kb/DL1465

кухня
источник
1
Эта ссылка больше не действительна. Я считаю, что обновленное название приложения - Apple Configurator, оно доступно здесь: itunes.apple.com/us/app/apple-configurator/id434433123?mt=12 Однако это OS X 10.10+.
ThomasW
1
@ThomasW: К сожалению, конфигуратор Apple, похоже, не имеет возможности просматривать журналы устройства, как это делает / имеет утилита настройки iPhone.
newenglander
1
Оно делает. Просто установите инструменты автоматизации из меню. krypted.com/iphone/…
Sune Kjærgård
2

У вас есть три варианта:

  • Организатор Xcode
  • Взломанное устройство с syslogd + openSSH
  • Используйте dup2 для перенаправления всех STDERR и STDOUT в файл, а затем "tail -f" для этого файла (последний является скорее симулятором, так как вы застряли с той же проблемой отслеживания файла на устройстве).

Итак, чтобы получить второй вариант, вам просто нужно установить syslogd и OpenSSH из Cydia, после чего потребуется перезапуск для запуска syslogd; теперь просто откройте сеанс ssh на вашем устройстве (через терминал или замазку в Windows) и введите "tail -f / var / log / syslog". И вот, системный журнал в реальном времени.

Если вы хотите попробовать 3º, просто найдите "dup2" в Интернете, это системный вызов.

fbernardo
источник
0

Чтобы просмотреть консоль вашего устройства iOS в Safari на вашем Mac (только для Mac):

  1. На вашем устройстве iOS перейдите в Настройки> Safari> Дополнительно и включите Web Inspector.
  2. На устройстве iOS загрузите веб-страницу в Safari.
  3. Подключите свое устройство напрямую к Mac
  4. На вашем Mac, если у вас еще не активировано меню разработчика Safari, перейдите в «Настройки»> «Дополнительно» и выберите «Показать меню разработки в строке меню».
  5. На вашем Mac выберите «Разработка»> [имя вашего устройства iOS]> [ваша веб-страница].

Появится инспектор Safari с консолью для вашего устройства iOS.

Ник
источник
3
мы можем видеть журнал консоли сафари, а не журнал приложения.
Gamma-Point
Это работает для эмулятора ... Не пробовал с реальным устройством.
sketchthat
0

В качестве альтернативы вы можете использовать экранный инструмент ведения журнала, такой как тикер-журнал, для просмотра журналов без (удобного) доступа к консоли.

Jonathan.Brink
источник