JVM ソフトウェアの起動は、jvm_invocation 環境変数を使用してカスタマイズできます。jvm_invocation 環境変数が定義されていない場合、デフォルトでは dbx は次の設定で JVM ソフトウェアを起動します。
java -agentlib:dbx_agent=sync=process-ID
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 ソフトウェアにパス名を指定しなかった場合、dbx はパス内の JVM ソフトウェアを起動します。
JVM ソフトウェアのパス名を指定するには、次の例に示すように、jvm_invocation 環境変数を適切なパス名に設定します。
jvm_invocation="/myjava/java -Xdebug"
この設定の場合、dbx は次の設定で JVM ソフトウェアを起動します。
/myjava/java –agentlib:dbx_agent=sync
JVM ソフトウェアに実行引数を渡すには、次の例に示すように、これらの引数を使用して JVM ソフトウェアを起動するように jvm_invocation 環境変数を設定します。
jvm_invocation="java -Xdebug -Xms512 -Xmx1024 -Xcheck:jni"
この例では、dbx が次のように JVM ソフトウェアを起動するようにします。
java –agentlib:dbx_agent=sync= -Xms512 -Xmx1024 -Xcheck:jni
Java アプリケーションは、起動のために独自のラッパーを使用できます。アプリケーションが独自のラッパーを使用している場合は、次の例に示すように、jvm_invocation 環境変数を使用して、使用されるラッパーを指定できます。
jvm_invocation="/export/siva-a/forte4j/bin/forte4j.sh -J-Xdebug"
この例では、dbx が次のように JVM ソフトウェアを起動するようにします。
/export/siva-a/forte4j/bin/forte4j.sh - –agentlib:dbx_agent=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 -J 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 を使ってラッパーをデバッグすることもできます。
jvm_invocation 変数の定義をスクリプトに追加して dbx を起動することによって、ラッパースクリプト自体の内部から dbx を起動するようにスクリプトを変更します。
#!/bin/sh CLASSPATH=/mydir/myclass:/mydir/myjar.jar; export CLASSPATH ABC=/mydir/abc; export ABC jvm_invocation="java -Xdebug <options>"; export jvm_invocation dbx myclass.class
この変更を行うと、スクリプトを実行することによってデバッグセッションを開始することができます。
いくつかのコマンド行オプションを受け入れるように、スクリプトを次のように少し変更します。
#!/bin/sh CLASSPATH=/mydir/myclass:/mydir/myjar.jar; export CLASSPATH ABC=/mydir/abc; export ABC JAVA_OPTIONS="$1 <options>" java $JAVA_OPTIONS $2
この変更を行なったら、次のように jvm_invocation 環境変数を設定して dbx を起動します。
% jvm_invocation="xyz -Xdebug"; export jvm_invocation % dbx myclass.class
dbx で 64 ビットの JVM ソフトウェアを起動して、64 ビットのオブジェクトライブラリが必要なアプリケーションをデバッグする場合は、jvm_invocation 環境変数を設定するときに -d64 オプションを含めます。
jvm_invocation="/myjava/java -Xdebug -d64"