名前

gdb - GNU デバッガー

書式

gdb [-help] [-nh] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-p procID] [-x cmds] [-d dir] [prog|prog procID|prog core]

説明

GDB をはじめとするデバッガーは、プログラムが実行中またはクラッシュした時に、 そのプログラムの「内部」で何が行なわれているか/行われていたかを調べるのに使用されます。

GDB は、4 つの機能 (加えてこれらをサポートする機能) によって 実行中にバグを見つけることを手助けします。

GDB では C, C++, Fortran, Modula-2 で書かれたプログラムのデバッグが行なえます。

GDB はシェルコマンド gdb で起動されます。 いったん起動すると、GDB コマンド quit を実行して終了するまで、 端末からコマンドを読み続けます。 GDB のオンラインヘルプは、GDB の中から help コマンドを実行して見ることができます。

gdb は引数やオプション無しで起動できますが、 たいていは 1 つか 2 つの引数をつけて起動します。 実行プログラムを引数にする場合は以下のようにします。

gdb program

また実行プログラムと core ファイルの両方を指定することもできます。

gdb program core

もし実行中のプロセスのデバッグを行ないたい場合には、 第 2 引数として core の代わりにプロセス ID を指定するか、あるいはオプション -p を用います:

gdb program 1234 gdb -p 1234

こうすれば GDB をプロセス 1234 にアタッチできます。 -p を用いる場合は、 program のファイル名は省略することができます。

よく利用される GDB コマンドには以下のようなものがあります。

break [file:]function

プレークポイントを (file 内の) function に設定します。

run [arglist]

プログラムの実行を開始します (もしあれば arglist を引数として)。

bt

バックトレース: プログラムのスタックを表示します。

print expr

式の値を表示します。

  1. プログラムの実行を再開します (たとえばブレークポイントで実行を中断した後)。

next

次のプログラム行を実行します (停止状態の後)。 その行内のすべての関数は 1 ステップで実行されます。

edit [file:]function

現在中断している場所のプログラム行をエディターで開きます。

list [file:]function

現在中断している場所の近辺のプログラムソースを表示します。

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 オプションで指定するファイルと同じになります。 またそれがもう一つあれば、 -c オプションで指定するファイルと同じになります。 オプションの多くは、 長い表記法と短い表記法の両方で指定することができますが、 ここではその両方を示します。 長い表記法は、 どのオプションであるのかが明確であれば、 短く切り詰めても構いません。 (好みにより - の代わりに + が使用できますが、ここではよく用いられる表記で記します。)

すべてのオプションとコマンドライン引数は、 指定した順番に処理されます。 -x オプションが使用されると、 この順番は変わります。

-help
-h

短い説明つきで、 すべてのオプションを表示します。

-symbols=file
-s file

シンボルテーブルをファイル file から読みます。

-write

実行ファイルやコアファイルへの書き込みを有効にします。

-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 のコマンドを読み込み、実行します。

-ex command

指定された GDB command を実行します。

-directory=directory
-d directory

ソースファイルを探す検索パスに directory を追加します。

-nh

~/.config/gdb/gdbinit~/.gdbinit~/.config/gdb/gdbearlyinit~/.gdbearlyinit の各ファイルから、 コマンドを実行しません。

-nx
-n

~/.gdbinit または .gdbearlyinit の初期化ファイルからコマンド実行しません。

-quiet
-q

起動時のメッセージおよび copyright を表示しません。 これらのメッセージはバッチモードでも抑制されます。

-batch

バッチモードで動作します。 -x で指定したファイル (および抑制されていなければ .gdbinit ファイル) 内の全てのコマンドを処理した後、戻り値として 0 を返して終了します。 コマンドファイル内の GDB コマンドの実行中にエラーが生じた場合は、 0 以外の値で終了します。 バッチモードは GDB をフィルタとして実行する場合、 たとえばプログラムをダウンロードして別のコンピュータ上で実行したりする場合 に便利です。 以下のメッセージ Program exited normally. (プログラムは正常に終了しました。) は通常、GDB の制御端末上で実行されるプログラムが終了するたびに 出力されるものですが、 バッチモードではこのようなメッセージは出力されません。

-cd=directory

カレントディレクトリの代わりに directory を GDB の作業用ディレクトリとして実行します。

-fullname
-f

Emacs が GDB をサブプロセスとして実行する際に、 このオプションを付加します。 このとき GDB は、スタックフレームが表示されるたびに (プログラムが中断するたびに)、 完全なファイル名と行番号を標準的な認識しやすい形式で表示します。 この表示書式は 2 つの  32 文字、ファイル名、コロンで区切られた行番号と文字位置、改行の順になっています。 これは Emacs-GDB インタフェースプログラムにおいて、 フレームに対応するソースコードを表示するために 2 つの  32 文字を使うことになっているからです。

-b bps

リモートデバッグ用に GDB が利用するシリアルインタフェースの転送速度を (ボーレートまたはビット/秒で) セットします。

-tty=device

プログラムの標準入出力に device を利用します。

関連項目

GDB の完全なドキュメントは Texinfo マニュアルとしてメンテナンスされています。infogdb の両プログラム、および GDB の Texinfo ドキュメントが適切にインストールされていれば、以下のコマンド

info gdb

を実行して完全なマニュアルを参照できます。

Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch, July 1991.

著作権

Copyright (c) 1988-2022 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being Free Software and Free Software Needs Free Documentation, with the Front-Cover Texts being A GNU Manual, and with the Back-Cover Texts as in (a) below.

(a) FSF の裏表紙には、 以下の文章が記述されています: You are free to copy and modify this GNU Manual. Buying copies from GNU Press supports the FSF in developing GNU and promoting software freedom.