[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


GDBコマンド

GDBコマンドの名前は、 最初の2、 3文字に省略することができます。 ただし、 省略されたコマンド名があいまいであってはなりません。 さらに、 同じGDBコマンドを連続して使用する場合には、 RETキーを押すだけで十分です。 また、 TABキーを押すことで、 途中まで入力されたコマンド名を補完させることができます (複数の補完候補がある場合には、 その一覧を表示します)。

コマンドの構文

GDBコマンドは1行で入力されます。 1行の長さには上限がありません。 行は、 コマンド名で始まり、 コマンド名によって意味が決まる引数がそれに続きます。 例えば、 stepコマンドはstepを実行する回数を引数に取ります。 例えば、 `step 5'のようになります。 stepコマンドは引数なしでも実行可能です。 コマンドによっては、 全く引数を受け付けないものもあります。

GDBコマンド名は省略可能です。 ただし、 省略された名前があいまいなものではあってはなりません。 省略形は、 それぞれのコマンドのドキュメント内に記載されています。 場合によっては、 あいまいな省略形も許されることがあります。 例えば、 sは、 文字sで始まるコマンドがほかにも存在するにもかかわらず、 stepコマンドの省略形として特別に定義されています。 ある省略形が使用可能か否かは、 それをhelpコマンドへの引数として使用することで判定可能です。

GDBへの入力として空行を与える (RETキーだけを押す) ことは、 1つ前に実行したコマンドを繰り返すということを意味します。 ただし、 いくつかのコマンド (例えば、runコマンド)は、 この方法で実行を繰り返すことはできません。 意図に反して再実行してしまうと問題を引き起こす可能性があるため、 繰り返し実行してほしくないようなコマンドの場合です。

listコマンドとxコマンドは、 RETキーにより繰り返し実行すると、 新たに引数が生成されて実行されるので、 前回実行されたときと全く同様の状態で繰り返し実行されるわけではありません。 こうすることで、 ソース・コードの内容やメモリの内容を容易に調べることができます。

GDBは、 別の用途でもRETキーを使用します。 moreユーティリティと同様の方法で、 長い出力を分割して表示する場合です (画面サイズ参照)。 このような場合、 RETキーを余分に押してしまうことは往々にしてありえるので、 GDBはこのような表示方法を使用しているコマンドについては、 RETキーによる繰り返し実行を行いません。

テキストの中に#記号があると、 そこから行末まではコメントになります。 コメントの部分は実行されません。 これは、 特にコマンド・ファイルの中で便利です (コマンド・ファイル参照)。

コマンド名の補完

途中まで入力されたコマンド名は、 それがあいまいでなければ、 GDBが残りの部分を補完してくれます。 また、 いつでも、 コマンド名の補完候補の一覧を表示してくれます。 この機能は、 GDBコマンド名、 GDBサブ・コマンド名、 ユーザ・プログラムのシンボル名に対して有効です。

GDBに単語の残りの部分を補完させたい場合には、 TABキーを押します。 補完候補が1つしか存在しない場合、 GDBは残りの部分を補完し、 ユーザがコマンドを (RETキーを押すことで) 完結させるのを待ちます。 例えば、 ユーザが以下のように入力したとしましょう。

(gdb) info bre TAB

GDBは`breakpoints'という単語の残りの部分を補完します。 なぜなら、 infoコマンドのサブ・コマンドのうち、 `bre'で始まるのはこの単語だけだからです。

(gdb) info breakpoints

この時点で、 ユーザはRETキーを押してinfo breakpointsコマンドを実行するか、 あるいは`breakpoints'コマンドが実行したいコマンドではなかった場合には、 バックスペース・キーを押してこれを消去してから、 他の文字を入力することができます (最初からinfo breakpointsコマンドを実行するつもりであれば、 コマンド名補完機能ではなくコマンド名の省略形を利用して、 `info bre'と入力した後、 ただちにRETキーを押してもいいでしょう)。

TABキーが押されたときに、 2つ以上の補完候補が存在する場合、 GDBはベル音を鳴らします。 さらにいくつか文字を入力してから補完を再度試みることも可能ですし、 単に続けてTABキーを押すことも可能です。 後者の場合、 GDBは補完候補の全一覧を表示します。 例えば、 `make_'で始まる名前を持つサブルーチンにブレイクポイントを設定したいような場合に、 b make_まで入力してTABキーを入力したところベル音が鳴ったとしましょう。 ここで続けてTABキーを入力すると、 プログラム内の`make_'で始まるすべての関数名が表示されます。 例えば、 以下のように入力したとします。

(gdb) b make_ TAB
ここでGDBはベル音を鳴らします。もう一度TABキーを入力すると、以下のように表示されます。
make_a_section_from_file     make_environ
make_abs_section             make_function_type
make_blockvector             make_pointer_type
make_cleanup                 make_reference_type
make_command                 make_symbol_completion_list
(gdb) b make_

補完候補を表示した後、 ユーザが続きを入力できるよう、 GDBは途中まで入力された文字列 (ここでは`b make_') を再表示します。

最初から補完候補の一覧を表示したいのであれば、 TABキーを2回押す代わりにM-?を入力することもできます。 ここで、 M-?というのはMETA ?を意味します。 これを入力するには、 キーボード上にMETAシフト・キーとして指定されたキーがあれば、 それを押しながら?を入力します。 METAシフト・キーがない場合には、 ESCキーを押した後、 ?を入力します。

ときには、 入力したい文字列が、 論理的には『単語』であっても、 GDBが通常は単語の一部に含めない括弧のような文字を含む場合があります。 このような場合に単語の補完機能を使用するためには、 GDBコマンド内において、 そのような単語を' (単一引用符) で囲みます。

このようなことが必要になる可能性が最も高いのは、 C++関数名を入力するときでしょう。 これは、 C++が関数のオーバーローディング (引数の型の違いによって識別される、 同一の名前を持つ関数の複数の定義) をサポートしているからです。 例えば、 関数nameにブレイクポイントを設定する場合、 それがint型のパラメータを取るname(int)なのか、 それともfloat型のパラメータを取るname(float)なのかをはっきりさせる必要があります。 このような場合に単語の補完機能を使用するには、 単一引用符'を関数名の前に入力します。 こうすることによって、 TABキーまたはM-?キーが押されて単語補完が要求されたときに、 補完候補の決定には通常よりも多くのことを検討する必要のあることがGDBに通知されます。

(gdb) b 'bubble( M-?
bubble(double,double)    bubble(int,int)
(gdb) b 'bubble(

場合によっては、 名前の補完をするには引用符を使用する必要があるということを、 GDBが自分で認識できることもあります。 このような場合、 ユーザが引用符を入力していなくても、 GDBが (可能な限り補完を行いつつ) 引用符を挿入してくれます。

(gdb) b bub TAB
GDBは入力された1行を以下のように変更し、ベル音を鳴らします。
(gdb) b 'bubble(

一般的には、 オーバーロードされたシンボルに対して補完が要求された際に引数リストがまだ入力されていないと、 GDBは、 引用符が必要であると判断します (そして実際に挿入します)。

オーバーロード関数に関する情報については、 C++式 を参照してください。 コマンドset overload-resolution offを使用すれば、 オーバーロードの解決を無効化することができます。 これについては、 C++用のGDB機能 を参照してください。

ヘルプの表示

helpコマンドを使うことで、 GDBコマンドに関するヘルプ情報をGDB自身に表示させることができます。

help
h
helpコマンド (省略形はh) を引数なしで実行することで、 コマンドのクラス名の簡単な一覧を表示させることができます。
(gdb) help
List of classes of commands:

aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
data -- Examining data
files -- Specifying and examining files
internals -- Maintenance commands
obscure -- Obscure features
running -- Running the program
stack -- Examining the stack
status -- Status inquiries
support -- Support facilities
tracepoints -- Tracing of program execution without
stopping the program user-defined -- User-defined commands Type "help" followed by a class name for a list of commands in that class. Type "help" followed by command name for full documentation. Command name abbreviations are allowed if unambiguous. (gdb)
help class
一般的なクラス名を引数に指定することで、 そのクラスに属するコマンドの一覧を表示させることができます。 statusクラスを指定した場合の表示例を以下に示します。
(gdb) help status
Status inquiries.

List of commands:

info -- Generic command for showing things
 about the program being debugged
show -- Generic command for showing things
 about the debugger

Type "help" followed by command name for full
documentation.
Command name abbreviations are allowed if unambiguous.
(gdb)
help command
helpの引数にコマンド名を指定することで、 そのコマンドの使用法に関する簡単な説明が表示されます。
apropos args
apropos argsコマンドは、 argsによって指定された正規表現にマッチするものを、 すべてのGDBコマンド、 および、 そのドキュメントの中から探します。 マッチするものはすべて表示されます。 例えば、
apropos reload
を実行すると、 以下のように表示されます。
set symbol-reloading -- Set dynamic symbol table reloading
                                 multiple times in one run
show symbol-reloading -- Show dynamic symbol table reloading
                                 multiple times in one run
complete args
complete argsコマンドにコマンド名の先頭の部分を指定すると、 コマンド名の補完候補の一覧を表示します。 argsには、 補完されるべきコマンド名の先頭の文字列を指定します。 例えば、
complete i
は、以下のような結果を表示します。
if
ignore
info
inspect
これは、 GNU Emacsでの使用を想定したものです。

helpコマンドに加えて、 GDBのinfoコマンドおよびshowコマンドを使用することで、 ユーザ・プログラムの状態やGDBの状態を問い合わせることができます。 どちらのコマンドも、 多くの観点からの問い合わせをサポートしています。 このマニュアルでは、 それぞれを適切と思われる箇所で紹介しています。 索引のinfoshowの部分に、 それぞれのサブ・コマンドの紹介されているページが示されています。 インデックスを参照してください。

info
このコマンド (省略形はi) は、 ユーザ・プログラムの状態を表わす情報を表示するものです。 例えば、 info argsによってユーザ・プログラムに与えられた引数を、 info registersによって現在使用中のレジスタの一覧を、 info breakpointsによってユーザが設定したブレイクポイントの一覧を、 それぞれ表示することができます。 help infoによって、 infoコマンドのサブ・コマンドの完全な一覧が表示されます。
set
setコマンドによって、 ある式の評価結果を環境変数に割り当てることができます。 例えば、 GDBのプロンプト文字列を$記号に変更するには、 set prompt $を実行します。
show
infoコマンドとは異なり、 showコマンドはGDB自身の状態を表わす情報を表示するものです。 showコマンドで表示可能な状態のほとんどは、 対応するsetコマンドで変更可能です。 例えば、 数値の表示に使用する基数は set radixコマンドで制御できます。 現在どの基数が使用されているかを単に知るためには、 show radixコマンドを使用します。 変更可能なすべてのパラメータとそれらの現在の値を表示するためには、 showコマンドを引数なしで実行します。 また、 info setコマンドを使用することもできます。 どちらのコマンドも、 同じ情報を出力します。

以下に、 対応するsetコマンドを持たないという意味で例外的である、 3つのshowサブ・コマンドを示します。

show version
実行中のGDBのバージョンを表示します。 GDBに関する障害レポートには、 この情報を含める必要があります。 もしも異なるバージョンのGDBを複数使用しているのであれば、 現在実行しているGDBのバージョンをはっきりさせる必要があるかもしれません。 GDBのバージョンが上がるにつれ、 新しいコマンドが導入され、 古いコマンドはサポートされなくなるかもしれません。 多くのシステム・ベンダがさまざまなバージョンのGDBを提供していますし、 GNU/LinuxディストリビューションにもさまざまなバージョンのGDBが含まれています。 このバージョン番号は、 GDBの起動の際に表示されるものと同一です。
show copying
GDBのコピー作成許可に関する情報が表示されます。
show warranty
GNUの『無保証(NO WARRANTY)』声明文が表示されます。 保証付きのGDBを使っている場合は、 保証に関する声明文が表示されます。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]