大体俺がよく出すバグはコアダンプなので、デバッガを使ってそれを追跡する方法について。
コンパイルするときに、
cc -g -O0 hoge.c
にしてコンパイル。
ついでに、
$ ulimit -c unlimited
にしてコアダンプをださせるようにする。そして、a.outを実行。で、まんまとエラーが起こって、停止するので、デバッガを起動してみる。そのときにコアダンプが出た場所がcoreというファイルに保存されてるので、それを参照しつつ、デバッガを起動するらしい。
$ gdb a.out core
そうするとコアダンプが起こったあたりまで行ってくれるらしい。ので、あとはbacktraceなり、displayなり、nextなり使ってデバッグすればいいらしい。
http://rat.cis.k.hosei.ac.jp/article/devel/debugongccgdb2.html