53

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

$:打开/path/build/Debug/MyProgram.app
$: 打开 /path/build/Debug/MyProgram.app > 输出
$: 打开 /path/build/Debug/MyProgram.app 2> 输出

在终端中,但我不在控制台或“输出”中输出。

正确的命令是什么?

PS。我的最终目标是编写一个 vim 插件来管理、构建、运行、调试 xcode 项目。如果你能让这个vi 输入管理器与 xcode 一起工作,你就可以为我省去这个麻烦。

4

4 回答 4

76

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

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

启动应用程序。

于 2008-12-13T09:58:38.220 回答
15

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

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

您可以使用 Console.app 查看以正常方式启动的应用程序的输出,因为启动基础设施专门将它们的stdout和发送到stderr那里。您还可以使用asl例程来查询日志,或者如果您愿意,可以执行更复杂的日志记录。

于 2008-12-13T08:29:31.740 回答
12

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

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

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

于 2008-12-13T00:38:04.123 回答
0

概述

这个想法是简单地使用ios-deploy从命令行运行应用程序。

指示

  1. 安装ios-deploy
  2. 从 xcode 运行应用程序(确保它运行成功)
  3. 转到 xcode 菜单 > 首选项 > 位置,然后单击派生数据中的箭头: 在此处输入图像描述
  4. 在派生数据目录中,在 Build/intermediates/Products 下搜索您的 .app 文件
  5. 在终端中键入以下内容, ios-deploy --debug --bundle 然后将 .app 文件从第 4 步拖到终端.. 你应该有这样的东西 ios-deploy --debug --bundle path/to/your/applicationName.app ,就是这样!该应用程序应该成功运行,所有日志都将转到您的终端。
于 2015-07-01T08:05:33.473 回答