ウインドリバーのオンラインサポートTechTip

第1回 「VxWorks」ダイナミックprintf
デバッグの方法の中で一番頻繁に使われるのは、printf文をソースコードに挿入する方法ではないでしょうか? しかし、なかなか1発で目的の箇所にデバッグ文を入れるのは至難の業で多くは何回もソースに挿入、コンパイル、リンク、ダウンロードなどを繰り返すことになり、多くの時間と手間を費やした経験はございませんか。ダイナミックprintfはソースコードに挿入するのではなく、デバッガを使って動作中のオブジェクトにダイナミックにprintf文を挿入することができるWorkbenchのダイナミックprintfイベントポイントと呼ばれる機能です。
Workbenchから行う場合:エディタで挿入したい変数を選択し右クリックでサブメニューを表示しAdd Dynamic 'printf'を選択します。(図1)
図1

図2
変数を表示するprintfが自動的に作成されます。必要に応じてフォーマットを変更できます。また、printfを実行する条件を設定するとこの条件に合った場合のみ表示されます。(図2)
GUIを使わずにコマンドで行う場合:
-> dprintf func1, t1, 5, "myvar = %d\n", &myvar
0x604e5538 (t1): myvar = 89
0x604e5538 (t1): myvar = 89
このようにブレイクポイントを設定する感覚で実行中に動的にprintfを挿入できます。ブレイクポイントでのデバッグ方法ではタスクをストップさせてしまいますが、このダイナミックprintfを使えばタスクを止めることなく実行できるのでシステムの動作のタイミングでデバッグすることができます。リアルタイムに表示しますので、膨大なデバッグ文が出るかもしれません。このような場合はタスクを限定したり、条件を設定したり、あるループ回数までスキップすることで、必要なものだけを表示させることができます。VxWorksやWind River Linuxのデバッグに、ぜひ、ご利用ください。
Technical Tips一覧 »ページの先頭へ戻る »

