Подтвердить что ты не робот

Как получить вывод приложения os x на консоли или в файл?

Я пишу приложение Cocoa с встроенным Mono. Я хочу запустить и увидеть свой вывод отладки в терминале. На стороне Cocoa я использую NSLog(), а на стороне Mono я использую Debug.Write(). Я могу видеть вывод отладки в консоли xcode, но не в Terminal. Это то, что я пробовал:

$: open /path/build/Debug/MyProgram.app
$: open /path/build/Debug/MyProgram.app > output
$: open /path/build/Debug/MyProgram.app 2> output

в терминале, но я не выводю его на консоль или в "выход".

Какая правильная команда?

PS. Моя конечная цель - написать плагин vim для управления, сборки, запуска, отладки проекта xcode. Вы можете избавить меня от этой проблемы, если вы можете получить этот менеджер ввода vi для работы с xcode.

4b9b3361

Ответ 1

Крис дал хороший обзор того, как работает Консоль, но для конкретного ответа на ваш вопрос, если вы хотите видеть результаты непосредственно в своем терминале, вам нужно запустить встроенный продукт в качестве дочернего элемента терминала, что означает использование что-то вроде

/path/debug/build/MyProgram.app/Contents/MacOS/MyProgram

чтобы запустить приложение.

Ответ 2

Терминал на Mac OS X - это еще одно приложение. Открытие окна терминала для ввода/вывода текста не является неотъемлемой функцией каждого приложения, как в Windows.

Кроме того, open /path/to/MyApp.app не выполняет MyApp.app в качестве подпроцесса вашей оболочки, он отправляет сообщение в инфраструктуру запуска операционной системы, прося ее выполнить приложение в обычном режиме, так же, как если бы оно было двойным, щелкнули в Finder или щелкнули в Dock. Вот почему вы не можете просто перенаправить свой вывод, чтобы посмотреть, что ваше приложение отправляет на stdout или stderr.

Вы можете использовать Console.app для просмотра результатов приложений, запущенных обычным способом, потому что инфраструктура запуска специально отправляет туда stdout и stderr. Вы также можете использовать подпрограммы asl для запроса журнала или выполнить более сложную регистрацию, если вы этого пожелаете.

Ответ 3

Откройте Console.app в/Приложения/Утилиты. Все выходные данные NSLog будут напечатаны в системном журнале.

Или, если вы запустите его из Xcode, весь вывод будет напечатан в консоли Debug.

Я сейчас не на своем Mac и не помню последовательность команд или меню, в котором находится Debug Console, возможно, меню сборки?

Ответ 4

Обзор

Идея состоит в том, чтобы просто запустить приложение из командной строки, используя ios-deploy.

Инструкции

  • Установить ios-deploy
  • Запустите приложение из xcode (убедитесь, что он успешно запущен)
  • перейдите в меню xcode > настройки > местоположения и щелкните по стрелке в производных данных: enter image description here
  • в каталоге производных данных найдите файл .app в разделе Build/intermediates/Products
  • в терминале введите следующее ios-deploy --debug --bundle затем перетащите файл .app с шага 4 на терминал.. у вас должно быть что-то вроде этого ios-deploy --debug --bundle path/to/your/applicationName.app и это! Приложение должно успешно запускаться, и все журналы будут отправляться на ваш терминал.