2010-12-11 2 views
0

私はネイティブコードでAndroidアプリケーションを開発しています。Androidのネイティブコードにポインタの値を記録する

共有ライブラリをデバッグする方法がわからないので、LogCatへのポインタから値をログに記録することにしました。

私はこのC++コードを有する:

extern GLfloat* vertPos; 

// More code here: 
... 

int i = 0; 
for(i = 0; i < numVertices; i++) 
{ 
     __android_log_print(ANDROID_LOG_VERBOSE, "initRendering-Vertices", "%d, %f", i, vertPos[i]); 
} 

numVerticesは2472個の要素に等しいです。

私はLogCatでそのような何かを取得しています:

12-11 08:17:35.354: VERBOSE/initRendering-Vertices(900): i = 614, value = 3.246999 
12-11 08:17:35.354: VERBOSE/initRendering-Vertices(900): i = 924, value = -8.000200 

私は310個の要素を失ってしまいました。

ポインタのすべての要素を確認する方法はありますか?

ありがとうございました。

+0

これはどのように可能ですか? stdoutをlogcatの出力に結合して、大量のログをstdoutに直接出力しようとしないのはなぜですか? – ognian

+0

私はAndroidの開発で非常に新しいので、私はそれを行う方法がわかりません。 – VansFannel

+1

http://developer.android.com/guide/developing/tools/adb.html#stdout – ognian

答えて

2

Androidログの実装では、カーネル内で64KBの循環バッファが使用されます。あなたが "logcat"よりも速くログにデータを書き込むことができれば、それを読み出すことができます。 logcatはUSBを介してワークステーションに出力を送るためにadbを待たなければならないので、それを逃すのはそれほど難しいことではありません。

fopenを使用して/sdcard/debug.txtというファイルを作成し、__android_log_print()をfprintf()に変更してから、実行が完了した後に出力を「取り込み」ます。それは何も落とされないことを保証します。

関連する問題