我正在编写一个嵌入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,你可以省去这个麻烦。
答案 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一样。这就是为什么您无法重定向其输出以查看您的应用发送到stdout
或stderr
的内容。
您可以使用Console.app查看以正常方式启动的应用程序的输出,因为启动基础结构专门在那里发送stdout
和stderr
。您还可以使用asl
例程查询日志,或者根据需要执行更复杂的日志记录。
答案 2 :(得分:10)
在/ Applications / Utilities中打开Console.app。所有NSLog输出都将打印在系统日志中。
或者,如果从Xcode中运行它,所有输出都将在Debug控制台中打印。
我现在不在我的Mac上,也不记得调试控制台所在的命令序列或菜单,可能是Build菜单?
答案 3 :(得分:-1)
我们的想法是使用ios-deploy从命令行运行应用程序。
ios-deploy --debug --bundle
然后将.app文件从第4步拖到终端..你应该有这样的东西
ios-deploy --debug --bundle path/to/your/applicationName.app
就是这样!该应用程序应该成功运行,所有日志都将转到您的终端。