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 应用程序

使用 dbx 调试 Java 代码

使用 dbx 调试 Java 代码的功能

使用 dbx 调试 Java 代码的限制

Java 调试的环境变量

开始调试 Java 应用程序

调试类文件

调试 JAR 文件

调试有包装器的 Java 应用程序

dbx 连接到正在运行的 Java 应用程序

调试内嵌 Java 应用程序的 C 应用程序或 C++ 应用程序

将参数传递给 JVM 软件

指定 Java 源文件的位置

指定 C 源文件或 C++ 源文件的位置

为使用定制类加载器的类文件指定路径

在 Java 方法中设置断点

在本地 (JNI) 代码中设置断点

定制 JVM 软件的启动

指定 JVM 软件的路径名

将运行参数传递给 JVM 软件

指定 Java 应用程序的定制包装器

使用接受命令行选项的定制包装器

使用不接受命令行选项的定制包装器

指定 64 位 JVM 软件

调试 Java 代码的 dbx 模式

从 Java 或 JNI 模式切换到本地模式

中断执行时切换模式

在 Java 模式下使用 dbx 命令

dbx 命令中的 Java 表达式求值

dbx 命令使用的静态和动态信息

在 Java 模式和本地模式下具有完全相同语法和功能的命令

在 Java 模式下有不同语法的命令

只在 Java 模式下有效的命令

18.  在机器指令级调试

19.  将 dbx 与 Korn Shell 配合使用

20.  调试共享库

A.  修改程序状态

B.  事件管理

C.  宏

D.  命令参考

索引

在 Java 模式下使用 dbx 命令

使用 dbx 调试由 Java 代码和本地代码组成的混合型代码时,dbx 命令分为以下几类:

未包括在上述任一类别的命令只在本地模式下有效。

dbx 命令中的 Java 表达式求值

在大多数 dbx 命令中使用的 Java 表达式计算器支持以下构造:

Java 表达式计算器不支持以下构造:

一种特别有用的检查 Java 应用程序状态的方式是在 IDE 或 dbxtool 中使用监视功能。

建议不要依赖表达式中作用不限于检查数据的精确值语义。

dbx 命令使用的静态和动态信息

只有在 JVM 软件启动后,有关 Java 应用程序的许多信息才可正常使用,并且执行完 Java 应用程序后,这些信息将不再使用。但是,使用 dbx 调试 Java 应用程序时,dbx 会在启动 JVM 软件前从属于系统类路径和用户类路径的类文件和 JAR 文件中收集其需要的一些信息。这样 dbx 便可在您运行应用程序前更好地对断点进行错误检查。

有些 Java 类及其属性可能无法通过类路径进行访问。dbx 可以检查并逐步执行这些类,这些类被装入后,表达式解析器便可以访问它们。但它收集的信息是临时性的,JVM 软件终止后便不再可用。

dbx 调试 Java 应用程序所需的某些信息在任何地方均无记录,因此,dbx 会在调试代码期间浏览 Java 源文件来取得这些信息。

在 Java 模式和本地模式下具有完全相同语法和功能的命令

以下 dbx 命令在 Java 模式下和本地模式下具有相同的语法并执行相同的操作。

命令
功能
attach
dbx 连接到正在运行的进程,从而停止执行并将程序置于调试控制之下
cont
使进程继续执行
dbxenv
列出或设置 dbx 环境变量
delete
删除断点和其他事件
down
将调用堆栈下移(远离 main
dump
打印过程或方法的所有局部变量
file
列出或更改当前文件
frame
列出或更改当前堆栈帧号
handler
修改事件处理程序(断点)
import
dbx 命令库中导入命令
line
列出或更改当前行号
list
列出或更改当前行号
next
单步执行一个源代码行(步过调用)
pathmap
将一个路径名映射至另一个路径名,以查找源文件等
proc
显示当前进程的状态
prog
管理正被调试的程序和它们的属性
quit
退出 dbx
rerun
不带参数运行程序
runargs
更改目标进程的参数
status
列出事件处理程序(断点)
step up
向上单步执行并步出当前函数或方法
stepi
单步执行一个机器指令(步入调用)
up
将调用堆栈上移(靠近 main
whereami
显示当前源代码行

在 Java 模式下有不同语法的命令

以下 dbx 命令在进行 Java 调试时所用的语法与进行本地代码调试时所用的语法不同,而且在 Java 模式下的运行方式也与本地模式下的运行方式不同。

命令
本地模式功能
Java 模式功能
assign
为程序变量赋新值
为局部变量或参数赋新值
call
调用过程
调用方法
dbx
启动 dbx
启动 dbx
debug
装入指定应用程序,然后开始调试该应用程序
装入指定 Java 应用程序,接着检查类文件是否存在,然后开始调试应用程序
detach
使目标进程脱离 dbx 的控制
使目标进程脱离 dbx 的控制
display
在每个停止点对表达式求值并打印。
在每个停止点对表达式、局部变量或参数求值并打印
files
列出与某个正规表达式匹配的文件名
列出 dbx 已知的所有 Java 源文件
func
列出或更改当前函数
列出或更改当前方法
next
单步执行一个源代码行(步过调用)
单步执行一个源代码行(步过调用)
print
打印表达式的值
打印表达式、局部变量或参数的值。
run
带参数运行程序
带参数运行程序
step
单步执行一个源代码行或语句(正在步入调用)
单步执行一个源代码行或语句(正在步入调用)
stop
设置源码级断点
设置源码级断点
thread
列出或更改当前线程
列出或更改当前线程
threads
列出所有线程
列出所有线程
trace
显示执行的源代码行、函数调用或变量更改
显示执行的源代码行、函数调用或变量更改
undisplay
撤消 display 命令
撤消 display 命令
whatis
打印表达式类型或类型声明
打印标识符声明
when
指定事件发生时执行命令
指定事件发生时执行命令
where
打印调用堆栈
打印调用堆栈

只在 Java 模式下有效的命令

以下 dbx 命令仅在 Java 模式或 JNI 模式下有效。

命令
功能
java
dbx 处于 JNI 模式下时,用于指示将执行的是 Java 版本的指定命令
javaclasses
发出该命令后,打印 dbx 已知的所有 Java 类的名称
joff
dbx 从 Java 模式或 JNI 模式切换到本地模式
jon
dbx 从本地模式切换到 Java 模式
jpkgs
发出该命令后,打印 dbx 已知的所有 Java 程序包的名称
native
dbx 处于 Java 模式下时,用于指示将执行的是本地版本的指定命令