gdbの使い方

gdbはデバッガです.デバッガとは,デバッグするためのツールです.デバッグ というのは,プログラムが想定した通りに動かない場合に,それを修正すること です.

※コンパイル時に-gオプションをつけること.
  1. muleでM-x gdbとする.
  2. Run gdb (like this): gdb
    と出るので,デバッグしたいプログラムの名前を入れます.現在編集中のファ イルのあるディレクトリを基準として,書くので,違うディレクトリにいる場 合には,パスも書きます.
    例: ~/src/foo.c を編集中にM-x gdbをした場合で,~/bin/barをデバッグ したい場合
    Run gdb (like this): gdb ../bin/bar
    Run gdb (like this): gdb ~/bin/bar
    の(どちらかの)ように指定します.
  3. Current directory.....などと数行表示されて,(gdb)という表示が左隅に出 ます.
  4. ここでいきなり実行したい場合は,
    r[RET]
    とします.
    もし,引数をつけたいならば, r 引数[RET]
    とします.
    いきなり実行すると,プログラムが終了するか,Segmentation Faultなどが 発生するまでプログラムが進行します.
  5. いきなり実行しないで,プログラムを少しずつ進めて行きたい場合は,まず どこで止めたいか,を指定します.(最初から1行ずつ進んでいくと面倒くさ いので) これを指定するのに,ソースの方で,止めたい行でCTRL-x+[Space]を 押します.すると,gdbの方の画面で
    Breakpoint 1 at 0x1105c: file foobar.c, line 127. というように表示されます.このように,ここに来たら止める,ということ をするのをブレークポイントを設定するといいます.
    ブレークポイントは何個設定しても構いませんし,解除することも出来ます. デバッガはプログラムを実行し,ブレークポイントの行を実行する寸前で止 まって待ち状態((gdb)が出ている状態)になります.
    ちなみに,(gdb)が出ている時には,いつでもブレークポイントを設定できま す.(当然ブレークポイントで止めて,別のブレークポイントを設定すること もできます)
    では,適当なところでブレークポイントを設定して 4.のように実行を開始し ます.
  6. 実行開始後,ブレークポイントで止まった場合は,
    Breakpoint 1, main (argc=1, argv=0xeffffa1c) at foobar.c:127
    というような表示が出て,プロンプトが表示されます.
    ソースの方を見てみると,その行の左端に"=>"と表示されています.
    この"=>"は表示されているだけで,プログラム自体は変更されていません.
  7. ブレークポイントで止まったときに出来ることはたくさんあります.ここで はそのうち,もっとも初歩的なものを説明します.

戻る