ある1つの式の値を (それがどのように変化するかを見るために) 頻繁に表示したい場合は、 その式を自動表示リストに加えて、 ユーザ・プログラムが停止するたびに、 GDBがその値を表示するようにするとよいでしょう。 リストに加えられた個々の式には、 それを識別するための番号が割り当てられます。 ある式をリストから削除する際に、 その番号を指定します。 自動表示は、 例えば以下のように表示されます。
2: foo = 38 3: bar[5] = (struct hack *) 0x3804
ここでは、
項目番号、
式、
および、
その式の現在の値が表示されます。
x
コマンドやprint
コマンドによって手動で表示を要求する場合と同様、
好みの出力フォーマットを指定することができます。
実は、
display
コマンドは、
ユーザのフォーマットの指定の詳細度によって、
print
コマンドとx
コマンドのいずれを使用するかを決定しています。
単位の大きさが指定された場合や、
x
コマンドでしかサポートされていない2つのフォーマット
(‘i’と‘s’)
のいずれかが指定された場合には、
x
コマンドが使用されます。
それ以外の場合は、
print
コマンドが使用されます。
display
expコマンドの実行後に<RET>キーを押しても、
display
コマンドは繰り返し実行されません。
display/
fmt expdisplay/
fmt addr例えば、 ‘display/i $pc’は、 ユーザ・プログラムが停止するたびに、 次に実行されるマシン命令を見るのに便利です (‘$pc’は、 プログラム・カウンタを指すのに一般に使用される名前です。 see Registers)。
undisplay
dnums...
delete display
dnums...
undisplay
コマンドを実行後に<RET>キーを押しても、
コマンドは再実行されません
(仮に再実行されてしまうとすると、
‘No display number ...’というエラーになるだけです)。
disable display
dnums...
enable display
dnums...
display
info display
表示される式がローカル変数への参照を含む場合、
そのローカル変数がセットアップされているコンテキストの範囲外では、
その式は無意味です。
このような式は、
その中の変数の1つでも定義されないコンテキストが実行開始されると表示不可になります。
例えば、
引数last_char
を取る関数の内部でdisplay last_char
コマンドを実行すると、
その関数の内部でユーザ・プログラムが実行を停止し続ける間は、
GDBはこの引数を表示します。
ほかの箇所
(last_char
という変数が存在しない箇所)
で停止したときには、
自動的に表示不可となります。
次にユーザ・プログラムがlast_char
が意味を持つ箇所で停止したときには、
再びその式の表示を可能にすることができます。