Как получить вывод приложения os x на консоль или в файл? - PullRequest
39 голосов
/ 13 декабря 2008

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

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

в терминале, но у меня нет вывода на консоль или в 'ouput'.

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

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

Ответы [ 4 ]

59 голосов
/ 13 декабря 2008

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

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

для запуска приложения.

12 голосов
/ 13 декабря 2008

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

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

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

10 голосов
/ 13 декабря 2008

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

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

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

0 голосов
/ 01 июля 2015

Обзор

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

Инструкция

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