win*Cygwin*gccの環境でC言語プログラムをgdbでデバグする。(ビルド時-gオプション必須) 本来セグメンテーションエラーが出ると、gccはcoreファイルというものを吐き、 こいつをgdbに食わせることで、バグの起きた箇所を探れるというわけなんですが、 Cygwin環境では、このcoreファイルが吐かれず、 代わりに、エラー時のCPUレジスタ値、関数スタック値などが数行かかれた、 stackdumpファイルというものが生成されます。 こいつは、coreファイルに比べ圧倒的にデバグ情報が少なく、gdbに食わせることもできません。 が、頑張ればスタックを逆アセンブルして、バグ箇所を特定できたりするというお話。 まず、gdbでプログラムを起動(run)し、main関数でbraekする。 gdb [execute file] (gdb) break main (gdb) run そこ