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.  命令参考

索引

定制 JVM 软件的启动

可能需要通过 dbx 定制 JVM 软件的启动,以便执行以下操作:

可以使用环境变量 jvm_invocation 定制 JVM 软件的启动。缺省情况下,环境变量 jvm_invocation 未定义时,dbx 将按以下方式启动 JVM 软件

java -Xdebug -Xnoagent -Xrundbx_agent:syncpid

定义环境变量 jvm_invocation 后,dbx 会使用该变量的值来启动 JVM 软件。

必须在环境变量 jvm_invocation 的定义中包括 -Xdebug 选项。dbx 会将 -Xdebug 扩展为内部选项 -Xdebug- Xnoagent -Xrundbxagent::sync

如果不在定义中包括 -Xdebug 选项,如下例所示,dbx 会显示错误消息。

jvm_invocation="/set/java/javasoft/sparc-S2/jdk1.2/bin/java"
dbx: Value of `$jvm_invocation’ must include an option to invoke the VM in debug mode

指定 JVM 软件的路径名

缺省情况下,如果不指定 JVM 软件的路径名,dbx 将在您的路径中启动 JVM 软件。

要指定 JVM 软件的路径名,请将环境变量 jvm_invocation 设置为相应的路径名,如下例所示。

jvm_invocation="/myjava/java -Xdebug"

此设置会使 dbx 按以下方式启动 JVM 软件:

/myjava/java -Djava.compiler=NONE -Xdebug -Xnoagent -Xrundbx_agent:sync

将运行参数传递给 JVM 软件

要将运行参数传递给 JVM 软件,请对环境变量 jvm_invocation 进行设置,以使用那些参数启动 JVM 软件,如下例所示。

jvm_invocation="java -Xdebug -Xms512 -Xmx1024 -Xcheck:jni"

这将使 dbx 按以下方式启动 JVM 软件:

java -Djava.compiler=NONE -Xdebug -Xnoagent -Xrundbx_agent:sync= -Xms512 -Xmx1024 -Xcheck:jni

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

Java 应用程序可以使用定制包装器来启动。如果应用程序使用定制包装器,便可以使用环境变量 jvm_invocation 来指定要使用的包装器,如下例所示。

jvm_invocation="/export/siva-a/forte4j/bin/forte4j.sh -J-Xdebug"

这将使 dbx 按以下方式启动 JVM 软件:

/export/siva-a/forte4j/bin/forte4j.sh - -J-Xdebug -J-Xnoagent -J-Xrundbxagent:sync=process_id

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

以下包装器脚本 (xyz) 会设置几个环境变量并接受命令行选项:

#!/bin/sh
CPATH=/mydir/myclass:/mydir/myjar.jar; export CPATH
JARGS="-verbose:gc -verbose:jni -DXYZ=/mydir/xyz"
ARGS=
while [ $# -gt 0 ] ; do
    case "$1" in
        -userdir) shift; if [ $# -gt 0 ]
; then userdir=$1; fi;;
        -J*) jopt=`expr $1 : ’-J<.*>’`
; JARGS="$JARGS ’$jopt’";;
        *) ARGS="$ARGS ’$1’" ;;
    esac
    shift
done
java $JARGS -cp $CPATH $ARGS

此脚本接受 JVM 软件和用户应用程序的某些命令行选项。对于这种形式的包装器脚本,可设置环境变量 jvm_invocation 并按以下方式启动 dbx

% jvm_invocation="xyz -J-Xdebug -Jany other java options"
% dbx myclass.class -Dide=visual

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

以下包装器脚本 (xyz) 会设置几个环境变量并启动 JVM 软件,但不接受任何命令行选项或类名:

#!/bin/sh
CLASSPATH=/mydir/myclass:/mydir/myjar.jar; export CLASSPATH
ABC=/mydir/abc; export ABC
java <options> myclass

可以通过 dbx 并采用以下两种方法之一,使用此类脚本来调试包装器:

指定 64 位 JVM 软件

如果希望 dbx 启动 64 位 JVM 软件来调试需要 64 位对象库的应用程序,请在设置环境变量 jvm_invocation 时包含 -d64 选项:

jvm_invocation="/myjava/java -Xdebug -d64"