Next: , Previous: Memory, Up: Data


8.6 自動表示

ある1つの式の値を (それがどのように変化するかを見るために) 頻繁に表示したい場合は、 その式を自動表示リストに加えて、 ユーザ・プログラムが停止するたびに、 GDBがその値を表示するようにするとよいでしょう。 リストに加えられた個々の式には、 それを識別するための番号が割り当てられます。 ある式をリストから削除する際に、 その番号を指定します。 自動表示は、 例えば以下のように表示されます。

     2: foo = 38
     3: bar[5] = (struct hack *) 0x3804

ここでは、 項目番号、 式、 および、 その式の現在の値が表示されます。 xコマンドやprintコマンドによって手動で表示を要求する場合と同様、 好みの出力フォーマットを指定することができます。 実は、 displayコマンドは、 ユーザのフォーマットの指定の詳細度によって、 printコマンドとxコマンドのいずれを使用するかを決定しています。 単位の大きさが指定された場合や、 xコマンドでしかサポートされていない2つのフォーマット (‘i’と‘s’) のいずれかが指定された場合には、 xコマンドが使用されます。 それ以外の場合は、 printコマンドが使用されます。

display exp
ユーザ・プログラムが停止するたびに表示される式のリストに、 式expを追加します。 See Expressions

コマンドの実行後に<RET>キーを押しても、 displayコマンドは繰り返し実行されません。

display/fmt exp
fmtの部分に、 大きさや繰り返し回数は指定せず、 出力フォーマットだけを指定した場合は、 式expを自動表示リストに追加して、 出力時のフォーマットが常に、 指定されたフォーマットfmtになるよう調整します。 See Output formats
display/fmt addr
fmtの部分に‘i’、 ‘s’を指定した場合、 あるいは、 単位の大きさ、 単位の数を指定した場合は、 ユーザ・プログラムが停止するたびに調べるメモリ・アドレスとして式addrを追加します。 ここで「調べる」というのは、 実際には‘x/fmt addr’を実行することを意味します。 See Examining memory

例えば、 ‘display/i $pc’は、 ユーザ・プログラムが停止するたびに、 次に実行されるマシン命令を見るのに便利です (‘$pc’は、 プログラム・カウンタを指すのに一般に使用される名前です。 see Registers)。

undisplay dnums...
delete display dnums...
表示すべき式のリストから、 項目番号dnumsに対応する要素を削除します。

undisplayコマンドを実行後に<RET>キーを押しても、 コマンドは再実行されません (仮に再実行されてしまうとすると、 ‘No display number ...’というエラーになるだけです)。


disable display dnums...
項目番号dnumsの表示を不可にします。 表示不可にされた表示項目は自動的には表示されませんが、 削除されたわけではありません。 後に、 表示可能にすることができます。


enable display dnums...
項目番号dnumsの表示を可能にします。 これにより、 表示不可が指定されるまで、 式の自動表示が再度有効になります。
display
リスト上の式のカレントな値を表示します。 これは、 ユーザ・プログラムが停止したときに実行されるのと同一の処理です。


info display
自動的に表示されるよう設定された式のリストを表示します。 個々の式の項目番号は表示されますが、 値は表示されません。 このリストには、 表示不可になっている式も含まれ、 そのことが分かるようにマーク付けされています。 また、 表示されるリストには、 その時点ではアクセスできない自動変数を参照しているために、 その時点では値を表示することのできない式も含まれます。

表示される式がローカル変数への参照を含む場合、 そのローカル変数がセットアップされているコンテキストの範囲外では、 その式は無意味です。 このような式は、 その中の変数の1つでも定義されないコンテキストが実行開始されると表示不可になります。 例えば、 引数last_charを取る関数の内部でdisplay last_charコマンドを実行すると、 その関数の内部でユーザ・プログラムが実行を停止し続ける間は、 GDBはこの引数を表示します。 ほかの箇所 (last_charという変数が存在しない箇所) で停止したときには、 自動的に表示不可となります。 次にユーザ・プログラムがlast_charが意味を持つ箇所で停止したときには、 再びその式の表示を可能にすることができます。