2016-08-12 10 views
0

ブレークポイント中にLLDB内で印刷する必要がある構造体の配列を動的に確保しました。これらはすべて、ObjC以外の純粋なCコードで起こっています。LLDB:構造体の動的配列をきれいに印刷するカスタム関数を作成する方法

印刷ジョブを実行する静的関数を作成しました。LLDB内で呼び出すことができますが、静かに停止する前に約60行しか印刷しません。時々、LLDBの中で再度Enterを押すまで、何も印刷されません。私はこれがどうにかしてスレッド化されていると考えていますが、その機能の中でdispatch_asyncを成功させることなくしようとしました。何も印刷されませんでした。

したがって、私はデバッグ作業に不可欠なので、その配列をきれいに印刷するための代替ソリューション(多分Pythonスクリプト)を探しています。

答えて

1

あなたのような何かについて話している:

struct MyStruct {/* some stuff */}; 
struct MyStruct *struct_ptr = malloc(100 * sizeof(struct MyStruct)); 

と、あなたが行っていたかのようにstruct_ptr印刷したい:

struct MyStruct struct_arr[100]; 

あなたはXcodeの8.0の前にlldb上にある場合、あなたはこれを行うだろう有する:

(lldb)メモリが-C 100 -t体mystruct struct_ptr

を読み、YならOUのXcode 8.0ベータの、新しいparrayコマンドを使用することができますのいずれかを持っている:

(lldb)parray 100 struct_ptr

+0

私は、印刷出力をより細かく制御を得るために期待していたが、これは見事に動作します!言及する価値があるのは、より大きな配列(または構造体がより優れていても大きければ)の場合、 '' set target.max-memory-read-size 1048576'またはデータを保持するのに十分な大きさの値が必要であるということです。 – CatalinM

+0

parrayは 'expression -Z -'の別名です。他の書式設定オプションを使用したい場合は、コマンドを完全に入力してください。そして、 "expression"コマンドが提供する書式設定オプションを追加できます。 'help expression'を見て、' --'の前にオプションを置かなければならないことに注意してください。 –

関連する問題