Sun Studio 12 Update 1:使用 dbx 调试程序

指定 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 并采用以下两种方法之一,使用此类脚本来调试包装器: