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 を使ってラッパーをデバッグすることもできます。
jvm_invocation 変数の定義をスクリプトに追加することによって、ラッパースクリプトそのものから 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 |