次: Auto Display, 前: Output Formats, 上: Data
コマンドx
(examineのx)
を使用することで、
ユーザ・プログラム内のデータ型にかかわらず、
メモリ上の値をいくつかの形式で調べることができます。
x/
nfu addrx
addrx
x
コマンドを使用してください。
n、 f、 uはいずれも、 どれだけのメモリをどのようにフォーマットして表示するかを指定するための、 必須ではないパラメータです。 addrは、 メモリの表示を開始するアドレスを指定する式です。 nfuの部分にデフォルトを使用するのであれば、 スラッシュ`/'は必要ありません。 いくつかのコマンドによって、 addrに対して便利なデフォルト値を指定することができます。
print
コマンドによって使用されるフォーマット、
`s'(NULL文字で終了する文字列)、
`i'(マシン命令)
のいずれかを指定します。
初期状態では、
デフォルトは`x'
(16進)
です。
デフォルトは、
x
コマンドまたはprint
コマンドを実行するたびに変更されます。
b
h
w
g
x
コマンド実行時に単位の大きさを指定するたびに、
その大きさが、
次にx
コマンドを実行する際のデフォルトになります
(フォーマット`s'および
`i'については、
単位の大きさは無視されます。
これらについては、
通常、
単位の大きさを指定しません)。
info breakpoints
(デフォルトは、
最後に表示されたブレイクポイントのアドレスに設定されます)、
info line
(デフォルトは、
行の先頭アドレスに設定されます)、
およびprint
コマンド
(メモリ内の値を表示するのに使用した場合)
です。
例えば、
`x/3uh 0x54320'は、
先頭アドレス0x54320
から始めて、
メモリ上の3個のハーフ・ワード
(h
)
の値を、
符号なし10進整数値
(`u')
としてフォーマットして表示するよう求める要求です。
また、
`x/4xw $sp'は、
スタック・ポインタ
(`$sp'については、
see Registers)
の上位4ワード
(`w')
のメモリの内容を16進
(`x')
で表示します。
単位の大きさを示す文字と出力フォーマットを指定する文字とは異なるので、 単位の大きさとフォーマットのどちらが前にくるべきかを記憶しておく必要はありません。 どちらを先に記述しても動作します。 `4xw'という出力指定と`4wx'という出力指定とは、 全く同一の意味を持ちます (ただし、 繰り返し回数nは最初に指定しなければなりません。 `wx4'ではうまく動きません)。
単位の大きさuは、
フォーマット`s'および`i'については無視されますが、
繰り返し回数nを使用したいことがあるかもしれません。
例えば、
`3i'はオペランドも含めて3つのマシン命令を表示したいということを指定しています。
disassemble
コマンドは、
マシン命令を調べる別の方法を提供してくれます。
See Source and machine code。
x
コマンドへの引数のデフォルトはすべて、
x
コマンドを使用してメモリ上を連続的に参照するために最少の情報だけを指定すればよいように設計されています。
例えば、
`x/3i addr'によってマシン命令を調べた後、
`x/7'とするだけで、
続く7個のマシン命令を調べることができます。
<RET>キーによってx
コマンドを繰り返し実行する場合は、
前回の繰り返し回数nが再度使用されます。
その他の引数も、
後続のx
コマンド使用時のデフォルトになります。
x
コマンドによって表示されるアドレスや内容は、
値ヒストリに保存されません。
これらの数がしばしば膨大になり、
邪魔になるからです。
その代わりにGDBは、
これらの値をコンビニエンス変数$_
および$__
の値として、
後続の式の内部で使用できるようにします。
x
コマンドを実行後、
最後に調べられたアドレスは、
コンビニエンス変数$_
の値として式の中で使用することができます。
また、
GDBによって調べられたそのアドレスの内容は、
コンビニエンス変数$__
の値として使用可能です。
x
コマンドに繰り返し回数が指定されている場合、
保存されるのは、
最後に表示されたメモリ単位のアドレスとその内容です。
これは、
最後の出力行にいくつかのメモリ単位が表示されている場合は、
最後に表示されたアドレス値と一致しません。