gdbを用いたデバッグ作業の備忘録を残す。
参考にしたのはこちら。
gdbの使い方
コンパイルのコマンド。
$ gcc -g -O0 <ソースファイル名>
デバッグに入る。
$ gdb a.out
ブレークポイントをmain関数にする。
(gdb) break main
走らせる。
(gdb) run
該当箇所まで1行ずつ進める
(gdb) next
(gdb) next
...
怪しいところに来たら、変数を出力してみる
(gdb) print <変数>
ソースコード表示。
(gdb) list
あるところ(hogehoge.cの50行目まで)まですっ飛ばしたいとき。
(gdb) break hogehoge.c:50
(gdb) continue
デバッグはうまくいったの…?
原因はわかったが、コードに問題はなかった。
inputのデータファイルをうまく扱えていなかっただけであった。
gdbを用いたデバッグ作業も良いが、今回の場合はそれよりも物理量(位置、速度、粒子間距離など)をアウトプットするほうが原因を特定しやすかった。
教訓: 面倒くさがらずに、全ての粒子の位置、速度、粒子間距離などをアウトプットせよ。うまくいったケースとうまくいかなかったケースを比較せよ。