2012-04-24 13 views
3

OS X LionでXcodeを使用してCコマンドラインアプリケーションをデバッグしようとしています。アプリケーションは、標準入力を介して多くの入力データを必要とします。シェルでは、テキストファイルをこのアプリケーションにパイプするだけです。Xcodeでアプリケーションを実行するパイプ

Xcodeでどうすればいいですか?

+0

の可能な複製[ファイルからstdinをXcode 4の実行可能ファイルにパイプする方法は?](http://stackoverflow.com/questions/7629886/how-can-i-pipe-stdin-from-a-file-実行可能なxcode-4) – David

答えて

2

....

私はX-コードにパイプへの道を見つけ出すことができなかったので、私は私のスクリプトの先頭に次のコードを追加していますテストファイルと呼ばれるテストファイルからパイプされます。

// For debugging 
if (argc == 2 && strcmp(argv[1], "debug") == 0) { 
    printf("== [RUNNING IN DEBUG MODE]==\n\n"); 
    char test_file_path[] = "/Users/bonobos/are/amazing/test.txt"; 
    freopen(test_file_path, "r", stdin); 
} 

Xcodeのは、コンパイル時にあなたは絶対パスを使用した方がいいでしょうテキストリソースをパッケージ化する気にしたくない場合は、それはので、いくつかの奇妙なランダムなフォルダに移動しているので、私は完全なファイルパスが必要に注意してください。

freopenは、ファイルの内容をstdinに送信します。

私はif文を持っているので、debugの引数を持つようにxcodeを設定しました。これはコメントでそれを行い、批判のためにコンパイルするときはコメントを忘れてしまいます。

に行き、Xcodeの引数を設定するには:スキーム>編集スキーム Edit Scheme

が次に実行方式で引数 'デバッグ' を設定>

製品:

add argument debug

1

残念ながら、あなたはできません。

NSFileHandle *input; 

    if (AmIBeingDebugged()) 
     input = [NSFileHandle fileHandleForReadingAtPath:@"/Users/me/debug.input"]; 
    else 
     input = [NSFileHandle fileHandleWithStandardInput]; 

AmIBeingDebuggedのソースはhereです:私はこのような目的を、デバッグのためのファイルからの読み込みに私のプログラムを修正するために抱えています。

1

デバッグのためにXcodeプロジェクトの実行可能ファイルにデータをパイプすることができます。

私の答えは、同様のStackoverflow質問hereを参照してください。 (便宜上コピー)

:Xcodeの4.5.1で

  1. オープンスキームエディタ(製品メニュー - >編集スキーム...)
  2. は、実行、デバッグスキームを選択
  3. 「情報」タブパネルで、「起動」ラジオボタンの選択を「自動」から「MyApp.appの起動を待つ」に変更してください。
  4. スキームエディタを閉じます
  5. [実行]ボタンを押して、ターゲットをビルドして実行します。 (ツールバーのXcodeのステータスウィンドウに「MyAppの起動待ち」が表示されます)
  6. ターミナルを起動して、ビルドされたアプリケーションのフォルダに移動します。

    echo mydata | ./MyApp.app/Contents/MacOs/MyApp

  7. スイッチ:

  8. 打ち上げあなたが標準入力に好きでアプリの配管(それは/ユーザ/ユーザ/ライブラリ/開発/ Xcodeの/ DerivedData/MyApp- dmzfrqdevydjuqbexdivolfeujsj/Build/Products/Debug/のようなものになります) Xcodeに戻って、デバッガはアプリケーションの起動を検出してそれにアタッチします。ただ、@ネストールの答えをよりよく明確にするため

+0

私の問題はこれを実行するたびにターミナルセッションを開く必要があることです。 mydataの内容を毎回コンソールエリアにコピーアンドペーストするだけでいいです(これは私がこの記事を探しに行くときに避けようとしていたものです)。 – anthropomorphic

関連する問題