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

印刷ビューの終了

更新: 2015 年 1 月
 
 

Java アプリケーション用の独自のラッパーの指定

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