ここで説明するコマンドによって、 ユーザ・プログラムの中で定義されているシンボル情報 (変数名、 関数名、 型名) に関する問い合わせを行うことができます。 この情報はユーザ・プログラムのテキストに固有のもので、 プログラムの実行時に変わるものではありません。 GDBはこの情報を、 ユーザ・プログラムのシンボル・テーブルの中、 もしくは、 GDB起動時に指定されたファイル (ファイルの選択を参照) の中で見つけるか、 ファイル管理コマンド (ファイルを指定するコマンドを参照) の実行によって見つけます。 時には、 GDBが通常は単語の区切り文字として使用するような文字を含むシンボルを参照することが必要になるかもしれません。 特に多いのが、 他のソース・ファイルの中の静的変数を参照する場合です (プログラム変数を参照)。 GDBは通常、典型的なファイル名、 例えば`foo.c'を解析して、 3つの単語 `foo'、 `.'(ピリオド)、 `c'であるとみなします。 GDBが`foo.c'を単一のシンボルであると認識できるようにするには、 それを単一引用符で囲みます。 例えば、
p 'foo.c'::x
は、
xの値をファイル`foo.c'のスコープの中で検索します。
info address symbol
whatis exp
whatis
$のデータ型を表示します。
ptype typename
ptype exp
ptype
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 regexp
info types
valueを含むすべての型に関する情報を表示し、
`i type ^value$'は名前がvalueそのものである型に関する情報のみを表示します。
このコマンドはptypeとは2つの点で異なります。
まず第1にwhatisと同様、
詳細な情報を表示しません。
第2に、
型が定義されているすべてのソース・ファイルを一覧表示します。
info source
info sources
info functions
info functions regexp
stepを含むすべての関数を見つけ、
`info fun ^step'は名前がstepで始まるすべての関数を見つけます。
info variables
info variables regexp
set symbol-reloading on
set symbol-reloading off
symbol-reloadingの設定はoffのままにするべきです。
さもないと、
(異なるディレクトリやライブラリの中にある)
同じ名前を持ついくつかのモジュールを含むような大きなプログラムをリンクする際に、
GDB
はシンボルを破棄してしまうかもしれません。
show symbol-reloading
symbol-reloadingのカレントな設定
(onまたはoff)
を表示します。
maint print symbols filename
maint print psymbols filename
maint print msymbols filename
info sourcesコマンドを使用することで、
これらのファイルがどれであるかを知ることができます。
代わりに`maint print psymbols'を使用すると、
GDB
が部分的にしか知らないシンボルに関する情報もダンプの中に含まれます。
これは、
GDBがざっと読みはしたものの、
まだ完全には読み込んでいないファイルに定義されているシンボルに関する情報です。
最後に`maint print msymbols'では、
GDBが何らかのシンボル情報を読み込んだオブジェクト・ファイルから、
最小限必要とされるシンボル情報がダンプされます。
GDBがどのようにしてシンボルを読み込むかについては、
ファイルを指定するコマンド
(のsymbol-fileの説明の部分)
を参照してください。