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

Я пишу приложение 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.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
49
0
39 907
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

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

Я стараюсь избегать использования Xcode. Я знаю, о чем ты говоришь. Cmd + Shift + R показывает консоль Xcode, и я вижу там все свои отладочные данные.

phi 13.12.2008 06:20

Я только что посмотрел Console.app. Выглядит многообещающе. Я вижу там всю свою продукцию; из NSLog () и Debug.Write ().

phi 13.12.2008 07:20

Это не значит, что вам нужно помешать своей разработке, используя их совершенно безрассудную и аварийную IDE. :)

Ian 13.03.2015 17:13

Этот ответ наиболее полезен, если вы пытаетесь отладить проблемы, возникающие при запуске пакетного приложения. Запуск в терминале может изменить результаты и показать различные сообщения журнала. В моем случае приложение из пакета не запустилось, но запуск с терминала завершился успешно. Сообщения журнала Console.app помогли мне определить недостающие права на пакеты, которые по умолчанию предоставляются приложениям, запускаемым через терминал.

NaderNader 01.05.2020 16:22

Терминал в 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.

dmonopoly 03.04.2012 02:19

что вы имеете в виду под /path/debug/build? Я хочу увидеть журнал выполнения PhpStorm на моем Mac OS X Sierra

Pmpr 06.10.2017 14:55
/path/debug/build должен был быть заполнителем для пути к папке ваших собранных продуктов.
Lily Ballard 06.10.2017 20:53

К сожалению, это не совсем то же самое, что open MyProgram.app. Я создал приложение, которое отлично работает при прямом запуске, но когда вы открываете приложение, оно сразу же закрывается.

Timmmm 18.10.2019 21:21

Как и в случае с @Timmmm, я смог отладить, временно удалив мой ~/.profile (который удалил все переменные envvariable или псевдонимы, которые позволяли моему приложению работать с терминала, но не при открытии приложения)

Alec Jacobson 12.02.2020 15:26

Обзор

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

инструкции

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

Другие вопросы по теме