web-dev-qa-db-ja.com

OS Xアプリケーションの出力をコンソールまたはファイルに取得するにはどうすればよいですか?

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。私の最終的な目標は、xcodeプロジェクトを管理、ビルド、実行、デバッグするためのvimプラグインを作成することです。これを取得できれば、この面倒を省くことができます vi入力マネージャー xcodeで動作します。

43
phi

Chrisは、コンソールの動作の概要を説明しましたが、具体的には質問に答えるために、結果を直接ターミナルで確認したい場合は、ビルドされた製品をターミナルの子として実行する必要があります。

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

アプリを起動します。

68
Lily Ballard

Mac OS Xのターミナルは、もう1つのアプリケーションです。テキストI/Oのターミナルウィンドウを開くことは、Windowsのようにすべてのアプリケーションに固有の機能ではありません。

さらに、open /path/to/MyApp.appは、シェルのサブプロセスとしてMyApp.appを実行せず、オペレーティングシステムの起動インフラストラクチャにメッセージを送信して、itにアプリケーションを通常の方法で実行するよう依頼します。 -Finderでクリックしたか、Dockでクリックした。そのため、出力をリダイレクトして、アプリがstdoutまたはstderrに何を送信しているかを確認することはできません。

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

14
Chris Hanson

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

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

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

11
Grant Limberg

概観

アイデアは ios-deploy を使用してコマンドラインからアプリを実行することです。

指示

  1. インストール ios-deploy
  2. Xcodeからアプリを実行します(アプリが正常に実行されることを確認してください)
  3. xcodeメニュー> [設定]> [場所]に移動し、派生データの矢印をクリックします。 enter image description here
  4. 派生データディレクトリのBuild/intermediates/Productsで.appファイルを検索します
  5. 端末で次のように入力しますios-deploy --debug --bundle次に、手順4の.appファイルをターミナルにドラッグします。次のようなものが必要ですios-deploy --debug --bundle path/to/your/applicationName.app 以上です!アプリは正常に実行され、すべてのログが端末に送られます。
0
abbood