Xcode 如何在控制台上获取OSX应用程序的输出,或获取文件的输出?

Xcode 如何在控制台上获取OSX应用程序的输出,或获取文件的输出?,xcode,debugging,terminal,Xcode,Debugging,Terminal,我正在编写一个嵌入Mono的Cocoa应用程序。我想在终端中运行并查看调试输出。在Cocoa端,我使用的是NSLog(),在Mono端,我使用的是Debug.Write()。我可以在Xcode的控制台中看到调试输出,但在终端中看不到。这就是我所尝试的: $: open /path/build/Debug/MyProgram.app $: open /path/build/Debug/MyProgram.app > output $: open /path/build/Debug/MyProgra

我正在编写一个嵌入Mono的Cocoa应用程序。我想在终端中运行并查看调试输出。在Cocoa端,我使用的是
NSLog()
,在Mono端,我使用的是
Debug.Write()
。我可以在Xcode的控制台中看到调试输出,但在终端中看不到。这就是我所尝试的:

$: open /path/build/Debug/MyProgram.app $: open /path/build/Debug/MyProgram.app > output $: open /path/build/Debug/MyProgram.app 2> output $:open/path/build/Debug/MyProgram.app $:open/path/build/Debug/MyProgram.app>输出 $:open/path/build/Debug/MyProgram.app 2>输出 在终端中,但我不在控制台或“输出”中显示输出

正确的命令是什么


我的最终目标是编写一个vim插件来管理、构建、运行和调试xcode项目。如果您能将其与xcode一起使用,您可以省去我的麻烦。

在/Applications/Utilities中打开Console.app。所有NSLog输出将打印在系统日志中

或者,如果在Xcode中运行它,所有输出都将在调试控制台中打印


我现在不在Mac上,也不记得调试控制台的命令序列或菜单,可能是构建菜单?

Mac OS X上的终端只是另一个应用程序。为文本I/O打开终端窗口并不像在Windows上那样是每个应用程序的固有功能

此外,
open/path/to/MyApp.app
不会将MyApp.app作为shell的子进程来执行,它会向操作系统的启动基础结构发送一条消息,要求它以正常方式执行应用程序,就像在Finder中双击或在Dock中单击一样。这就是为什么您无法重定向其输出以查看应用程序正在发送到
stdout
stderr
的内容


您可以使用Console.app查看以正常方式启动的应用程序的输出,因为启动基础结构专门在那里发送它们的
stdout
stderr
。您还可以使用
asl
例程来查询日志,或者根据需要执行更复杂的日志记录。

Chris很好地概述了控制台的工作原理,但为了明确回答您的问题:如果您想直接在终端中看到结果,您需要作为终端的子级运行构建的产品,这意味着使用

/path/debug/build/MyProgram.app/Contents/MacOS/MyProgram
启动应用程序。

概述 我们的想法是简单地使用命令行运行应用程序

说明书
  • 安装
  • 从xcode运行应用程序(确保它成功运行)
  • 转到xcode菜单>首选项>位置,然后单击衍生数据中的箭头:
  • 在派生数据目录中,在Build/intermediates/Products下搜索.app文件
  • 在终端类型中,输入以下命令
    
    ios部署--调试--捆绑
    
    然后将.app文件从步骤4拖动到终端。。你应该有这样的东西
    
    ios部署--调试--绑定路径/到/your/applicationName.app
    
    就这样!应用程序应成功运行,所有日志将转到您的终端

  • 我试图避免使用Xcode。我知道你在说什么。Cmd+Shift+R显示了Xcode的控制台,我在那里看到了我所有的调试输出。看起来很有希望。我在那里看到了我所有的产出;从NSLog()和Debug.Write()开始,并不意味着您必须使用它们的完全naff和粗糙的IDE来削弱您的开发如果您试图调试运行捆绑应用程序时出现的问题,则此答案最有用。在终端中运行可以更改结果并显示不同的日志消息。在我的例子中,我的捆绑应用程序未能启动,但从终端启动成功。Console.app日志消息帮助我识别默认情况下为终端启动的应用程序提供的缺少的捆绑授权。对我也有用-谢谢!对于偶然发现这个答案的其他人,它基本上意味着运行./MyProgram.app/Contents/MacOS/MyProgram(如果您位于包含.app的目录中)。您所说的
    /path/debug/build
    是什么意思?我想在我的Mac OS X上查看PhpStorm的执行日志。Sierra
    /path/debug/build
    本应作为指向build products文件夹的路径的占位符。遗憾的是,这与
    open MyProgram.app
    不完全相同。我已经构建了一些应用程序,它在直接运行时运行良好,但当你打开应用程序时,它会立即退出。类似于@timmm的情况,我可以通过临时删除我的
    ~/.profile
    (删除了允许我的应用程序在终端上运行的任何变量或别名,但在打开应用程序时不会)