53

私はMonoが埋め込まれたCocoaアプリケーションを書いています。ターミナルでデバッグ出力を実行して確認したい。ココア側ではを使用しNSLog()ており、モノ側ではを使用してDebug.Write()います。Xcodeのコンソールにはデバッグ出力が表示されますが、ターミナルには表示されません。これは私が試したものです:

$:/path/build/Debug/MyProgram.appを開きます
$:/path/build/Debug/MyProgram.appを開く>出力
$:/path/build/Debug/MyProgram.app2>出力を開きます

ターミナルではありますが、コンソールまたは「出力」に出力しません。

正しいコマンドは何ですか?

PS。私の最終的な目標は、xcodeプロジェクトを管理、ビルド、実行、デバッグするためのvimプラグインを作成することです。この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.appMyApp.app をシェルのサブプロセスとして実行するのではなく、オペレーティング システムの起動インフラストラクチャにメッセージを送信し、通常の方法でアプリケーションを実行するように要求ます。これは、Finder でダブルクリックまたはクリックした場合と同じです。ドックで。そのため、出力をリダイレクトして、アプリが何に送信しているかを確認することはできませんstdoutまたはstderr.

Console.app を使用して、通常の方法で起動されたアプリケーションの出力を確認できます。これは、起動インフラストラクチャが特別にstdoutandを送信するためstderrです。asl必要に応じて、ルーチンを使用してログを照会したり、より高度なログを実行したりすることもできます。

于 2008-12-13T08:29:31.740 に答える
12

/ Applications/UtilitiesでConsole.appを開きます。すべてのNSLog出力はシステムログに出力されます。

または、Xcode内から実行すると、すべての出力がデバッグコンソールに出力されます。

私は今Macを使用しておらず、コマンドシーケンスや、デバッグコンソールが表示されているメニュー(おそらくビルドメニュー)を思い出せませんか?

于 2008-12-13T00:38:04.123 に答える