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

印刷ビューの終了

更新: 2015 年 1 月
 
 

機械命令レベルでトレースする

機械命令レベルでのトレースは、ソースコードレベルでのトレースと同じように行われます。ただし、tracei コマンドを使用する場合は例外です。tracei コマンドでは、実行中のアドレスま たはトレース対象の変数の値がチェックされた場合にだけ、単一の命令が実行されます。tracei コマンドは、stepi のような動作を自動的に行います。すなわち、プログラムは 1 度に 1 つの命令だけ進み、関数呼び出しに入ります。

tracei コマンドを使用すると、dbx がアドレスの実行またはトレースされている変数または式の値をチェックしている間、プログラムが各命令のあとに一瞬停止するようになります。このように tracei コマンドの場合、実行速度がかなり低下します。

trace とそのイベント指定および修飾子の詳細については、トレースの実行および tracei コマンドを参照してください。

tracei コマンドの一般的な構文は次のとおりです。

tracei event-specification [modifier]

一般的に使用される tracei コマンドの書式は次のとおりです。

tracei step
各命令をトレースします。
tracei next
各命令をトレースしますが、呼び出しを飛び越します。
tracei at address
指定のコードアドレスをトレース

詳細については、tracei コマンドを参照してください。

SPARC の場合:

(dbx) tracei next -in main
(dbx) cont
0x00010814: main+0x0004:  clr     %l0
0x00010818: main+0x0008:  st      %l0, [%fp - 0x8]
0x0001081c: main+0x000c:  call    foo
0x00010820: main+0x0010:  nop
0x00010824: main+0x0014:  clr     %l0
....
....
(dbx) (dbx) tracei step -in foo -if glob == 0
(dbx) cont
0x000107dc: foo+0x0004:  mov     0x2, %l1
0x000107e0: foo+0x0008:  sethi   %hi(0x20800), %l0
0x000107e4: foo+0x000c:  or      %l0, 0x1f4, %l0     ! glob
0x000107e8: foo+0x0010:  st      %l1, [%l0]
0x000107ec: foo+0x0014:  ba      foo+0x1c
....
....