Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

JVM ソフトウェアの起動方法のカスタマイズ

次のことを行うために、dbx からの JVM ソフトウェアの起動方法のカスタマイズが必要になることがあります。

JVM ソフトウェアの起動方法のカスタマイズは、jvm_invocation 環境変数を使って行うことができます。jvm_invocation 環境変数が定義されていない場合、デフォルトでは dbx は次の設定で JVM ソフトウェアを起動します。


java -Xdebug -Xnoagent -Xrundbx_agent:syncpid

jvm_invocation 環境変数が定義されている場合は、その変数の値を使って 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"