古い記事
ランダムジャンプ
新しい記事

GDB

2001-11-12-1
コアダンプしたときにどの関数で落ちたか、その関数はどこから呼ばれているのかという情報は、デバッガ (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 をいじってなかった私はすっかり忘れていた。というわけで、ここにメモした次第。