GDB をはじめとするデバッガは、プログラムが実行中もしくはクラッシュした時にそのプログラムの「内部」で何が行なわれているか/行われていたかを調べるのに使用されます。
GDB は、4 つの機能 (加えてこれらをサポートする機能) によって 実行中にバグを見つけることを手助けします。
GDB では C, C++, Modula-2 などで書かれたプログラムのデバッグが行なえます。 GNU Fortran コンパイラが完成すれば Fortran もサポートされます。
GDB はシェルコマンドgdbで起動されます。いったん起動すると、GDB コマンドquitを実行して終了するまで、端末からコマンドを読み続けます。 gdbのオンラインヘルプは(gdbの中で) helpコマンドを実行すれば表示されます。
gdb は引数やオプション無しで起動できますが、 たいてい、1 つか 2 つの引数を付けて起動します。実行プログラムを 引数にする場合は以下のようになります:
gdb program
また実行プログラムと core ファイルの両方を指定することもできます:
gdb program core
もし実行中のプロセスのデバッグを行ないたい場合には、 第 2 引数として core の代わりにプロセス ID を指定します:
gdb program 1234
これは GDB をプロセス ID 1234 のプロセスに接続します(このとき`1234'という名前のファイルが存在してはいけません。 GDB はまず core ファイルを最初にチェックしにいくからです)。
よく利用される GDB コマンドには以下のようなものがあります:
GDB の詳細についてはUsing GDB: A Guide to the GNU Source-Level Debugger, by Richard M. Stallman and Roland H. Pesch. を参照して下さい。 同じテキストは、 info プログラム内の gdb エントリからオンラインで参照できます。
オプション以外の引数は、実行ファイルと core ファイル (もしくはプロセス ID) を表します。つまりオプションフラグでもオプションフラグの引数でもない最初の 引数は `-se' オプションで指定するファイルと同じになり、(もしあれば)次の 2 番目の引数は `-c' オプションで指定するファイルと同じになります。 オプションの多くは、長い表記法と短い表記法の両方で指定することができま すが、ここではその両方を示します。 長い表記法は、どのオプションであるのかが明確であれば、短く切り詰めても 構いません。 (好みにより `-' の代わりに `+' が使用できますが、ここではよく用いられる表記で記します。)
全てのオプションとコマンドライン引数は指定した順番に処理されます。 `-x' オプションが使用されると、この順番は変わってきます。
バッチモードは GDB をフィルタとして実行する場合、 たとえばプログラムをダウンロードして別のコンピュータ上で実行したりする場合 に便利です。 以下のメッセージ
Program exited normally. (プログラムは正常に終了しました。)
は通常、GDB の制御端末上で実行されるプログラムが終了するたびに 出力されるものですが、 バッチモードではこのようなメッセージは出力されません。
info 内の `gdb' エントリー; Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch, July 1991.
Copyright (c) 1991 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.