gdb − GNU デバッガ |
gdb |
[−help] [−nx] [−q] [−batch] [−cd=dir] [−f] [−k] [−wcore] [−b bps] [−tty=dev] [−s symfile] [−e prog] [−se prog] [−c core] [−x cmds] [−d dir] [prog[core|procID]] |
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 コマンドには以下のようなものがあります: |
break [file:]function |
ブレークポイントを (file内の) functionに設定します。 |
run [arglist] |
プログラムの実行を開始します(もしあれば arglistを引数として)。 |
bt |
バックトレース: プログラムのスタックを表示します。 |
print expr |
式の値を表示します。 |
c |
プログラムの実行を再開します。(たとえばブレークポイントで実 行を中断した後で) |
||
next |
次のプログラム行を実行します。その行内の全ての関数は 1 ス テップで実行されます。 |
||
step |
次のプログラム行を実行します。もしその行に関数が含まれて いれば、その関数内をステップ実行していきます。 |
help [name] |
GDB コマンド nameについての情報や、 GDB を使う上での一般的な 情 報を表示します。 |
quit |
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’ オプションが使用されると、この順番は変わってきます。 |
−help |
||||
−h |
短い説明つきで、全てのオプションを表示します。 |
−symbols=file |
−s file |
シンボルテーブルをファイル fileから読みます。 |
−exec=file |
−e file |
ファイル file を実行可能ファイルとして利用します。 core dump と連係して pure data を調べるのにも用いられます。 |
−se=file |
ファイル file からシンボルテーブルを読み、同時にそれを実行可能 ファイルとして利用します。 |
−core=file |
−c file |
ファイル file を core dump として利用します。 |
−command=file |
−x file |
ファイル fileから GDB のコマンドを読み込み、実行します。 |
−directory=directory |
−d directory |
ソースファイルを探すサーチパスに directory を追加します。 |
−nx |
||
−n |
初期化ファイル ‘.gdbinit’ からコマンドを読み込みません。 通 常 は、 全 てのコマンドオプションと引数が処理された後で、初期化 ファイル内のコマンドが実行されます。 |
|
−quiet |
||
−q |
起動時のメッセージおよび copyright を表示しません。これらの メッセージはバッチモードでも抑制されます。 |
|
−batch |
バッチモードで動作します。‘−x’ で指定したファイル(およ び、-nx か -n で抑制されていなければ ‘.gdbinit’) 内の全てのコマ ン ド を処理した後、戻り値として 0 を返して終了します。コマンド ファイル内の GDB コマンドの実行中にエラーが生じた場合は、 0 以 外の値で終了します。 |
バッチモードは GDB をフィルタとして実行する場合、たとえばプログ ラムをダウンロードして別のコンピュータ上で実行したりする場合 に 便利です。以下のメッセージ |
Program exited normally.(プログラムは正常に終了しました。) は 通常、GDB の制御端末上で実行されるプログラムが終了するたびに 出力されるものですが、バッチモードではこのようなメッセージは 出 力されません。 |
−cd=directory |
カレントディレクトリの代わりに directory を GDB の作業用ディレ クトリとして実行します。 |
−fullname |
−f |
Emacs が GDB をサブプロセスとして実行する際にこのオプション を 付加します。このとき GDB は、スタックフレームが表示される度( プログラムが中断する度を含みます)に、完全なファイル名と行番号を 標 準 的 な 認識しやすい形式で表示します。この表示書式は 2 つの ‘ 32’ 文字、ファイル名、コロンで区切られた行番号と文字位置、 改 行 の順になっています。これは EmacsGDB インタフェースプログラム において、フレームに対応するソースコードを表示するために 2 つの ‘ 32’ 文字を使うことになっているからです。 |
−kernel |
−k |
gdb を カーネルデバッグモードで使用します。プロンプトは ‘‘(kgdb)’’ になります。 |
||
−wcore |
このオプションはカーネルデバッグモードで「動 作 中 の」 カー ネ ル をデバッグしている時のみ使用可能であり、コアファイル (/dev/mem) を書き込み可能にします。 |
||
−b bps |
リモートデバッグ用に GDB が利用するシリ ア ル イ ン タ フェー ス の 転送速度を (ボーレートまたはビット/秒で)セットしま す。 |
−tty=device |
プログラムの標準入出力に device を利用します。 |
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. |