JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:使用 dbx 调试程序     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  dbx 入门

2.  启动 dbx

3.  定制 dbx

4.  查看和导航到代码

5.  控制程序执行

6.  设置断点和跟踪

7.  使用调用堆栈

8.  求值和显示数据

9.  使用运行时检查

10.  修复并继续

11.  调试多线程应用程序

12.  调试子进程

13.  调试 OpenMP 程序

14.  处理信号

15.  使用 dbx 调试 C++

16.  使用 dbx 调试 Fortran

17.  使用 dbx 调试 Java 应用程序

18.  在机器指令级调试

检查内存的内容

examinex 命令用法

使用地址

使用格式

使用计数

使用地址的示例

dis 命令用法

listi 命令用法

在机器指令级单步执行和跟踪

在机器指令级单步执行

在机器指令级跟踪

在机器指令级设置断点

在地址处设置断点

regs 命令用法

平台特定寄存器

SPARC 寄存器信息

x86 寄存器信息

AMD64 寄存器信息

19.  将 dbx 与 Korn Shell 配合使用

20.  调试共享库

A.  修改程序状态

B.  事件管理

C.  宏

D.  命令参考

索引

在机器指令级单步执行和跟踪

机器指令级命令与其对应的源码级命令的功能相同,只不过它们在单步指令级而非源代码行级执行。

在机器指令级单步执行

要从一个机器指令单步执行到下一个机器指令,请使用 nexti 命令或 stepi 命令

nexti 命令和 stepi 命令与其对应的源代码级命令运行方式相同:nexti 命令步过函数,stepi 命令步入由下一个指令调用的函数(停止于被调用函数中的第一个指令)。命令形式也相同。有关说明,请参见next 命令step 命令

nexti 命令和 stepi 命令的输出与其对应的源代码级命令的输出有两点不同:

例如:

(dbx) func
hand::ungrasp
(dbx) nexti
ungrasp +0x18:  call support
(dbx)

有关更多信息,请参见nexti 命令stepi 命令

在机器指令级跟踪

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

使用 tracei 命令时,它会使程序在执行每个指令后停止一会儿,这时,dbx 检查地址执行情况或跟踪的变量或表达式的值。使用 tracei 命令会显著降低执行速度。

有关跟踪及其事件规范和修饰符的更多信息,请参见跟踪执行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
....
....