2011-01-20 8 views
4

XCodeからOSXアプリケーションをデバッグすると、XCodeデバッギングコンソールからアプリケーションのコンソールと通信できます。たとえば、アプリケーションはprintf()からstdoutになり、XCodeデバッグコンソールに表示され、アプリケーションはfgets()stdin XCodeデバッグコンソールに入力することができます。iPhone、ハードウェアまたはエミュレータのstdinから読み込む方法はありますか?

iOSのiPhoneアプリケーションをデバッグするとき、stdoutprintf()らを。アル。うまく動作)フックアップ、XCodeのように思えるが、ないstdin

誰でもiOS/iPhoneでstdinを作ったことはありますか?これは、たとえiOS Cocoaアプリであっても、デバッグ中に非常に便利です。私はこれをソケットのようなもっと複雑なやり方で動かすことができますが、私はXCodeを使ってこのようにしています。

更新日:

これはこれを説明します。 iOSシミュレータは実際にはstdin/dev/nullを開きます。 stdoutがどこに行くのかを知ることができます(通常は/dev/ttys00X)。それをO_RDONLYで再度開き、stdinに割り当てます。これはiOSシミュレータにはうまくいくが、iphoneハードウェアへのシリアル接続の回線規律が間違っているように見える。xcodeデバッグコンソールに入力を続けても、iPhoneのハードウェアには送信されないiPhoneのハードウェアでは、stdin別名/dev/ttys00Xに何かが現れるのを待っているだけです)。

iPhoneハードウェアでこれを動作させる方法があるのだろうか?

答えて

2

私はこの正確な問題に対する解決策はありません。それを行う方法がない可能性は非常に高いです。私は代わりの提案があります。私は自分のプロジェクトの1つでそれを使用し、それはかなりうまくいった。

AsyncSocketライブラリを使用して、マイクロTCPサーバーを実装しました。このサーバーは、telnetを使用して接続してアプリケーションと通信できます。このアプローチにはいくつかの利点があります:

  • は、デバッガ
  • アプリは、任意のコンピュータからアクセス可能である下で実行する必要はありません
  • それは便利な他人の携帯電話にアプリを(アクセスすることが可能ですチーム)に
  • それは(スクリプト可能だことができますバッチ複数のコマンド)
  • 拡張()
+0

ブラウザで接続するには、この外のHTTPサーバを作るのは簡単はい - とにかくこれをやるつもりだと思う。デバッグの目的で、ソケット上にサーバーを開いておくとかなり便利です。 –

関連する問題