ここで説明するコマンドによって、 ユーザ・プログラムの中で定義されているシンボル情報 (変数名、 関数名、 型名) に関する問い合わせを行うことができます。 この情報はユーザ・プログラムのテキストに固有のもので、 プログラムの実行時に変わるものではありません。 GDBはこの情報を、 ユーザ・プログラムのシンボル・テーブルの中、 または、 GDB起動時に指定されたファイル (see Choosing files) の中で見つけるか、 ファイル管理コマンド (see Commands to specify files) の実行によって見つけます。
ときには、 参照する必要のあるシンボルの中に、 GDBが通常は単語の区切り文字として扱う文字が含まれていることがあるかもしれません。 特に多いのが、 他のソース・ファイルの中の静的変数を参照する場合です (see Program variables)。 ファイル名は、 オブジェクト・ファイルの中にデバッグ・シンボルとして記録されていますが、 GDBは通常、 典型的なファイル名、 例えばfoo.cを解析して、 3つの単語 `foo'、 `.'(ピリオド)、 `c'であるとみなします。 GDBが`foo.c'を単一のシンボルであると認識できるようにするには、 それを単一引用符で囲みます。 例えば、
p 'foo.c'::x
は、
x
の値をファイルfoo.cのスコープの中で検索します。
info address
symbol`print &symbol'との相違に注意してください。 `print &symbol'はレジスタ変数に対しては機能しませんし、 スタック内のローカル変数に対して実行すると、 その変数のカレントなインスタンスの存在するアドレスそのものが表示されます。
whatis
expwhatis
$
のデータ型を表示します。
ptype
typenameptype
expptype
ptype
はwhatis
と異なります。
例えば、 変数宣言
struct complex {double real; double imag;} v;
に対して、
whatis
、
ptype
はそれぞれ以下のような出力をもたらします。
(gdb) whatis v type = struct complex (gdb) ptype v type = struct complex { double real; double imag; }
whatis
と同様、
引数なしでptype
を使用すると、
値ヒストリの最後の値である$
の型を参照することになります。
info types
regexpinfo types
value
を含むすべての型に関する情報を表示し、
`i type ^value$'は、
名前がvalue
そのものである型に関する情報だけを表示します。
このコマンドはptype
とは2つの点で異なります。
まず第1にwhatis
と同様、
詳細な情報を表示しません。
第2に、
型が定義されているすべてのソース・ファイルを一覧表示します。
info source
info sources
info functions
info functions
regexpstep
を含むすべての関数を見つけ、
`info fun ^step'は、
名前が文字列step
で始まるすべての関数を見つけます。
info variables
info variables
regexpいくつかのシステムにおいては、 ユーザ・プログラムの停止・再起動を伴うことなく、 そのユーザ・プログラムを構成する個々のオブジェクト・ファイルを更新することができます。 例えば、 VxWorksでは、 欠陥のあるオブジェクト・ファイルを再コンパイルして、 実行を継続することができます。 このようなマシン上でプログラムを実行しているのであれば、 自動的に再リンクされたモジュールのシンボルをGDBに再ロードさせることができます。
set symbol-reloading on
set symbol-reloading off
symbol-reloading
の設定はoffのままにするべきです。
さもないと、
(異なるディレクトリやライブラリの中にある)
同じ名前を持ついくつかのモジュールを含むような大きなプログラムをリンクする際に、
GDB
はシンボルを破棄してしまうかもしれません。
show symbol-reloading
symbol-reloading
のカレントな設定
(on
またはoff
)
を表示します。
maint print symbols
filenamemaint print psymbols
filenamemaint print msymbols
filenameinfo sources
コマンドを使用することで、
これらのファイルがどれであるかを知ることができます。
代わりに`maint print psymbols'を使用すると、
GDB
が部分的にしか知らないシンボルに関する情報もダンプの中に含まれます。
これは、
GDBがざっと読みはしたものの、
まだ完全には読み込んでいないファイルに定義されているシンボルに関する情報です。
最後に`maint print msymbols'では、
GDBが何らかのシンボル情報を読み込んだオブジェクト・ファイルから、
最小限必要とされるシンボル情報がダンプされます。
GDBがどのようにしてシンボルを読み込むかについては、
Commands to specify files
(のsymbol-file
の説明の部分)
を参照してください。