Oracle® Solaris Studio 12.4:使用 dbx 调试程序

退出打印视图

更新时间: 2015 年 1 月
 
 

在计算机指令级跟踪

计算机级的跟踪技术与源代码级相同,只是要使用 tracei 命令。执行 tracei 命令时,dbx 只会在每次检查执行的地址或跟踪的变量值后,执行一个指令。tracei 命令会产生类似 stepi 的自动行为。程序一次前进一个指令来步入函数调用。

使用 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
....
....