Я пишу приложение Cocoa со встроенным 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
в терминале, но я не делаю вывод на консоль или в «вывод».
Какая правильная команда?
PS. Моя конечная цель - написать плагин vim для управления, сборки, запуска и отладки проекта xcode. Вы можете избавить меня от этих хлопот, если сможете заставить этот vi менеджер ввода работать с xcode.





Откройте Console.app в / Applications / Utilities. Весь вывод NSLog будет напечатан в системном журнале.
Или, если вы запустите его из Xcode, весь вывод будет напечатан в консоли отладки.
Я сейчас не на своем Mac и не помню последовательность команд или меню, в котором находится консоль отладки, возможно, меню сборки?
Я только что посмотрел Console.app. Выглядит многообещающе. Я вижу там всю свою продукцию; из NSLog () и Debug.Write ().
Это не значит, что вам нужно помешать своей разработке, используя их совершенно безрассудную и аварийную IDE. :)
Этот ответ наиболее полезен, если вы пытаетесь отладить проблемы, возникающие при запуске пакетного приложения. Запуск в терминале может изменить результаты и показать различные сообщения журнала. В моем случае приложение из пакета не запустилось, но запуск с терминала завершился успешно. Сообщения журнала Console.app помогли мне определить недостающие права на пакеты, которые по умолчанию предоставляются приложениям, запускаемым через терминал.
Терминал в Mac OS X - это просто еще одно приложение. Открытие окна терминала для ввода-вывода текста не является неотъемлемой возможностью каждого приложения, как в Windows.
Кроме того, open /path/to/MyApp.app не выполняет MyApp.app в качестве подпроцесса вашей оболочки, он отправляет сообщение в инфраструктуру запуска операционной системы с просьбой Это выполнить приложение обычным образом, как если бы оно было дважды щелкнуто в Finder или щелкнул в доке. Вот почему вы не можете просто перенаправить его вывод, чтобы увидеть, что ваше приложение отправляет на stdout или stderr.
Вы можете использовать Console.app для просмотра вывода приложений, запущенных обычным образом, потому что инфраструктура запуска специально отправляет туда свои stdout и stderr. Вы также можете использовать процедуры asl для запроса журнала или выполнить более сложное ведение журнала, если хотите.
Крис дал хороший обзор того, как работает Консоль, но чтобы конкретно ответить на ваш вопрос: если вы хотите видеть результаты непосредственно в своем Терминале, вам необходимо запустить созданный продукт как дочерний элемент Терминала, что означает использование чего-то вроде
/path/debug/build/MyProgram.app/Contents/MacOS/MyProgram
для запуска приложения.
У меня тоже сработало - спасибо! Для других, кто натыкается на этот ответ, это в основном означает запуск ./MyProgram.app/Contents/MacOS/MyProgram, если вы находитесь в каталоге, содержащем .app.
что вы имеете в виду под /path/debug/build? Я хочу увидеть журнал выполнения PhpStorm на моем Mac OS X Sierra
/path/debug/build должен был быть заполнителем для пути к папке ваших собранных продуктов.
К сожалению, это не совсем то же самое, что open MyProgram.app. Я создал приложение, которое отлично работает при прямом запуске, но когда вы открываете приложение, оно сразу же закрывается.
Как и в случае с @Timmmm, я смог отладить, временно удалив мой ~/.profile (который удалил все переменные envvariable или псевдонимы, которые позволяли моему приложению работать с терминала, но не при открытии приложения)
Идея состоит в том, чтобы просто запустить приложение из командной строки, используя iOS-развертывание.

ios-deploy --debug --bundle
затем перетащите файл .app с шага 4 в терминал .. у вас должно получиться что-то вроде этого
ios-deploy --debug --bundle path/to/your/applicationName.app
вот и все! Приложение должно успешно запуститься, и все журналы попадут на ваш терминал.
Я стараюсь избегать использования Xcode. Я знаю, о чем ты говоришь. Cmd + Shift + R показывает консоль Xcode, и я вижу там все свои отладочные данные.