機械命令レベルでのトレースは、ソースコードレベルでのトレースと同じように行われます。ただし、tracei を使用する場合は例外で、実行中のアドレスまたはトレース対象の変数の値がチェックされた場合にだけ、単一の命令が実行されます。tracei は、stepi のような動作を自動的に行います。すなわち、プログラムは 1 度に 1 つの命令だけ進み、関数呼び出しに入ります。
tracei を使用すると、各命令が実行され、アドレスの実行またはトレース中の変数または式の値を dbx が調べている間、プログラムは一瞬停止します。このように tracei の場合、実行速度がかなり低下します。
トレースとそのイベント仕様と修飾子の詳細については、第 5 章「ブレークポイントとトレースの設定」を参照してください。
tracei event-specification [modifier]
tracei step |
各命令をトレース |
tracei next |
各命令をトレースするが、呼び出しを飛び越します。 |
tracei at address |
指定のコードアドレスをトレース |
(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) 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 .... ....