Oracle® Solaris Studio 12.4: dbx コマンドによるデバッグ

印刷ビューの終了

更新: 2015 年 1 月
 
 

examine または x コマンドの使用

examine コマンドまたはその別名 x を使用すると、メモリーの内容やアドレスを表示することができます。

あるメモリーの内容を表示するには、書式 formatcount 項目の 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 はアドレスの絶対値、またはアドレスとして使用できる任意の式です。address は + (プラス記号) に置き換えることができます。これにより、次のアドレスの内容がデフォルト書式で表示されます。

次の例は有効なアドレスです。

0xff00
絶対アドレス
main
関数のアドレス
main+20
関数アドレス + オフセット
&errno
変数のアドレス
str
文字列を指すポインタ変数

メモリーを表示するためのアドレス表現は、名前の前にアンパサンド & を付けて指定します。関数名はアンパサンドなしで使用できます。&mainmain と同じです。レジスタは、名前の前にドル記号 $ を付けることによって表します。

書式の使用

format は、dbx が問い合わせの結果を表示するときのアドレス表示書式です。 生成される出力は、現在の表示書式によって異なります。表示書式を変更する場合は、異なるformatコードを使用してください。

dbx セッションの開始時に設定されるデフォルトの書式は X です。これにより、アドレスまたは値が 32 ビットワードとして 16 進数で表示されます。 次のメモリー表示書式が有効です。

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 進数の 1 バイトとして表示
c
1 文字として表示
n
10 進数 (1 バイト) として表示。
w
1 つのワイド文字として表示
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 進数の繰り返し回数です。増分サイズは、メモリーの表示書式によって異なります。

アドレスの使用例

次の例は、アドレスと書式オプションを使用して、現在の停止点から始まる 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)