コアダンプしたときにどの関数で落ちたか、その関数はどこから呼ばれて
いるのかという情報は、デバッガ (gdb) の where コマンドでささっと見
よう。gdb からプログラムを起動してのデバッグってのはあんまりやりた
くないけど、こういう使い方なら楽です。gdb なんてどうがんばっても
派手派手な統合開発環境にはかなわないんだから、お手軽に使うことを
第一に考えなきゃね。
% unlimit ← core を残すように設定
% prog hoge ← prog を実行したら落ちた!
segmentation fault (core dumped)
% gdb prog core ← gdb を立ち上げる
...
(gdb) where ← どうだ!
#0 0x08053dd8 in ORSimple::OROne (this=0x8064470, r=0) at
main.cpp:343
#1 0x08053f5f in OR::Loop (this=0x8064470) at main.cpp:325
#2 0x0804a2c8 in main (argc=7, argv=0x7ffff614) at main.cpp:782
#3 0x2ab3da1e in __libc_start_main (main=0x8049a6c <main>, argc=7,
ところで、「where」はコマンドとして、あんまり馴染みがない (私にとっ
て) ので覚えにくい。半年近く gdb をいじってなかった私はすっかり忘
れていた。というわけで、ここにメモした次第。




