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の状態を問い合わせることができます。
どちらのコマンドも、
多くの観点からの問い合わせをサポートしています。
このマニュアルでは、
それぞれを適切と思われる箇所で紹介しています。
索引のinfo
やshow
の部分に、
それぞれのサブ・コマンドの紹介されているページが示されています。
インデックスを参照してください。
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
show copying
show warranty