3.7 デバッグツールを使いたい

Problem

自分でモジュールを作ってデバッグする以外に何か方法はあるか.

Solution

以下の3項目が主に考えられる.

  1. コマンドライン上から gdb を利用したデバッグ

  2. harktool による伝達関数の誤差確認

harktool についてはプログラムのデバッグというよりは, 定位や分離のパフォーマンスを上げる方に近いかもしれない. 以下,項目毎に簡単に説明する.

  1. コマンドライン上から gdb を利用したデバッグ
    gdb とは GNU のフリーのソースレベルデバッガであり, ブレイクポイントなどを指定して途中で実行を止めたり, 一行ごとに実行したりと,色々と便利なツールである. HARK のデバッグに関しては以下のように使用する.

    • -g -ggdb オプションつきでコンパイル
      Makefile.amAM_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.nnfile.n を実行する)

    • ステップ実行(一行ずつ実行)
      (gdb) n

    • 実行再開(ブレイクポイントなどで中断している時)
      c nfile.n

  2. harktool による伝達関数の誤差確認
    HARK ドキュメントの harktool の節を参照.

See Also

gdb によるブレイクポイントを利用した デバッグモジュールの作り方については, HARK 講習会資料の「実装 : Channel Selector の改造」を参照.