如何在控制台或文件中获取os x应用程序的输出?

时间:2008-12-13 00:30:32

标签: 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/MyProgram.app 2> output
在终端中

但是我没有在控制台或“输出”输出。

什么是正确的命令?

PS。我的最终目标是编写一个vim插件来管理,构建,运行,调试xcode项目。如果你能让vi input manager使用xcode,你可以省去这个麻烦。

4 个答案:

答案 0 :(得分:59)

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

之类的东西
/path/debug/build/MyProgram.app/Contents/MacOS/MyProgram

启动该应用。

答案 1 :(得分:12)

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

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

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

答案 2 :(得分:10)

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

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

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

答案 3 :(得分:-1)

概述

我们的想法是使用ios-deploy从命令行运行应用程序。

说明

  1. 安装ios-deploy
  2. 从xcode运行应用程序(确保它成功运行)
  3. 转到xcode菜单>偏好>位置并单击派生数据中的箭头: enter image description here
  4. 在派生数据目录中,在Build / intermediates / Products
  5. 下搜索.app文件 终端中的
  6. 键入以下内容 ios-deploy --debug --bundle 然后将.app文件从第4步拖到终端..你应该有这样的东西 ios-deploy --debug --bundle path/to/your/applicationName.app 就是这样!该应用程序应该成功运行,所有日志都将转到您的终端。