examine コマンドまたはその別名 x を使用すると、メモリーの内容やアドレスを表示することができます。
あるメモリーの内容を表示するには、書式 format の count 項目の address で表される次の構文を使用します。デフォルトの address は、前に表示された最後のアドレスの次のアドレスになります。デフォルトの count は 1 です。デフォルト format は、前の examine または X コマンドで使用されたものと同じです。
examine コマンドの構文は次のとおりです。
examine [address] [/ [count] [format]] |
address1 から address2 までのメモリー内容を書式 format で表示するには、次のように入力します。
examine address1, address2 [/ [format]] |
アドレスの内容ではなくアドレスを指定の書式で表示するには、次のように入力します。
examine address = [format] |
examine によって最後に表示されたアドレスの次のアドレスに格納された値を出力するには、次のように入力します。
examine +/ i |
式の値を出力するには、式をアドレスとして入力します。
examine address=format examine address= |
address はアドレスの絶対値、またはアドレスとして使用できる任意の式です。+ (プラス記号) はデフォルトのアドレスの次のアドレスを表します。
たとえば、次のアドレスは有効です。
0xff99 |
絶対アドレス |
main |
関数のアドレス |
main+20 |
関数アドレス + オフセット |
&errno |
変数のアドレス |
str |
文字列を指すポインタ変数 |
メモリーを表示するためのアドレス表現は、名前の前にアンパサンド & を付けて指定します。関数名はアンパサンドなしで使用できます。&main は main と同じです。レジスタは、名前の前にドル記号 $ を付けることによって表します。
format は、dbx がアドレスの問い合わせ結果を表示するときの書式です。 生成される出力は、現在の表示書式 format によって異なります。表示書式を変更する場合は、異なる format コードを使用してください。
各 dbx セッションの初めに設定されるデフォルトの書式は X です。このとき、16 進表記のアドレスと値が 1 ワード (32 ビット) で表示されます。次の表は、表示書式の一覧です。
i |
アセンブラ命令として表示 |
d |
10 進表記の 16 ビット (2 バイト) で表示 |
D |
10 進表記の 32 ビット (4 バイト) で表示 |
o |
8 進表記の 16 ビット (2 バイト) で表示 |
O |
8 進表記の 32 ビット (4 バイト) で表示 |
x |
16 進表記の 16 ビット (2 バイト) で表示 |
X |
16 進表記の 32 ビット (4 バイト) で表示 (デフォルト書式) |
b |
8 進表記のバイトで表示 |
c |
1 バイトの文字で表示 |
w |
ワイド文字列で表示 |
-s |
NULL バイトで終わる文字列で表示 |
W |
ワイド文字列で表示 |
f |
単精度浮動小数点数として表示 |
F, g |
倍精度浮動小数点数として表示 |
E |
拡張精度浮動小数点数として表示 |
ld, lD |
10 進数として 32 ビット (4 バイト) で表示 (D と同じ) |
lo, lO |
8 進数として 32 ビット (4 バイト) で表示 (O と同じ) |
lx, LX |
16 進数として 32 ビット (4 バイト) で表示 (X と同じ) |
Ld, LD |
10 進数として 64 ビット (8 バイト) で表示 |
Lo, LO |
8 進数として 64 ビット (8 バイト) で表示 |
Lx, LX |
16 進数として 64 ビット (8 バイト) で表示 |
count は、10 進法での反復カウントを示します。増分サイズは、メモリーの表示書式によって異なります。
次の例は、count および format の各オプションを付けてアドレスを使用して、現在の停止点から始まる 5 つの連続する分解された命令を表示する方法を示しています。
SPARC システムの場合 :
(dbx) stepi stopped in main at 0x108bc 0x000108bc: main+0x000c: st %l0, [%fp - 0x14] (dbx) x 0x108bc/5i 0x000108bc: main+0x000c: st %l0, [%fp - 0x14] 0x000108c0: main+0x0010: mov 0x1,%l0 0x000108c4: main+0x0014: or %l0,%g0, %o0 0x000108c8: main+0x0018: call 0x00020b90 [unresolved PLT 8: malloc] 0x000108cc: main+0x001c: nop |
x86 システムの場合 :
(dbx) x &main/5i 0x08048988: main : pushl %ebp 0x08048989: main+0x0001: movl %esp,%ebp 0x0804898b: main+0x0003: subl $0x28,%esp 0x0804898e: main+0x0006: movl 0x8048ac0,%eax 0x08048993: main+0x000b: movl %eax,-8(%ebp) |