次: Convenience Vars, 前: Print Settings, 上: Data
printコマンドにより表示された値は、
GDBの
値ヒストリに保存されます。
これによりユーザは、
これらの値をほかの式の中で参照することができます。
値は、
シンボル・テーブルが
(例えば、
fileコマンドやsymbol-fileコマンドにより)
再読み込みされるか破棄されるまで、
維持されます。
シンボル・テーブルが変更されると、
値ヒストリが破棄されるのは、
その中の値が、
シンボル・テーブル内で定義されている型を参照しているかもしれないからです。
表示される値はヒストリ番号を与えられ、
この番号によって参照することができます。
この番号は1から始まる連続した整数です。
printコマンドは、
値に割り当てられたヒストリ番号を、
値の前に`$num = 'という形で表示します。
ここで、
numがそのヒストリ番号です。
値ヒストリの中の任意の値を参照するには、
`$'に続けてヒストリ番号を指定します。
printコマンドが出力に付加するラベルは、
ユーザにこのことを知らせるためのものです。
$単体では、
ヒストリ内の最も新しい値を参照し、
$$はその1つ前の値を参照します。
$$nは、
最新のものから数えてn番目の値を参照します。
$$2は$$の1つ前の値を参照し、
$$1は$$と同一、
$$0は$と同一です。
例えば、 ユーザがたった今、 構造体へのポインタを表示し、 今度はその構造体の内容を見たいと考えているとしましょう。 この場合は、
p *$
を実行すれば十分です。
また、
連結された構造体があり、
そのメンバのnextが次の構造体を指すポインタであるとすると、
次の構造体の内容を表示するには、
p *$.next
とします。
このように連結された構造体を次々に表示するには、 このコマンドを繰り返し実行すればよく、 それは<RET>キーによって可能です。
このヒストリは、
式ではなく、
値を記録するという点に注意してください。
xの値が4のときに、
以下のコマンドを実行すると、
printコマンドによって値ヒストリに記録される値は、
xの値が変化したにもかかわらず4のままです。
print x
set x=5
show valuesshow valuesがヒストリを変更しないという点にあります。
show values nshow values +show values nを繰り返し実行するのに<RET>キーを押すことは、
`show values +'を実行するのと全く同じ結果をもたらします。