Problem
自分でモジュールを作ってデバッグする以外に何か方法はあるか.
Solution
以下の3項目が主に考えられる.
コマンドライン上から gdb を利用したデバッグ
harktool による伝達関数の誤差確認
harktool についてはプログラムのデバッグというよりは, 定位や分離のパフォーマンスを上げる方に近いかもしれない. 以下,項目毎に簡単に説明する.
コマンドライン上から gdb を利用したデバッグ
gdb とは GNU のフリーのソースレベルデバッガであり, ブレイクポイントなどを指定して途中で実行を止めたり, 一行ごとに実行したりと,色々と便利なツールである. HARK のデバッグに関しては以下のように使用する.
-g -ggdb オプションつきでコンパイル
(Makefile.am に AM_CXXFLAGS = -g -ggdb を追加)
gdb /path/flowdesigner
これで gdb コンソールに移行する.
(gdb)
ブレイクポインタの設定
(gdb) b MODULE::calculate(関数名で指定する場合)
(gdb) b module.cc:62(行数で指定する場合.module.c の62行目)
ブレイクポインタの確認
(gdb) i b
条件付きブレイクポイント(一例)
(gdb) cond 3 i==500(ループ処理の中で3番目のブレイクポイントを500回実行した後に中断する)
普通の実行
(gdb) r nfile.n(nfile.n を実行する)
ステップ実行(一行ずつ実行)
(gdb) n
実行再開(ブレイクポイントなどで中断している時)
c nfile.n
harktool による伝達関数の誤差確認
HARK ドキュメントの harktool の節を参照.
See Also
gdb によるブレイクポイントを利用した デバッグモジュールの作り方については, HARK 講習会資料の「実装 : Channel Selector の改造」を参照.