JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  dbx の概要

2.  dbx の起動

3.  dbx のカスタマイズ

4.  コードの表示とコードへの移動

5.  プログラムの実行制御

6.  ブレークポイントとトレースの設定

7.  呼び出しスタックの使用

8.  データの評価と表示

9.  実行時検査

10.  修正継続機能 (fix と cont)

11.  マルチスレッドアプリケーションのデバッグ

12.  子プロセスのデバッグ

13.  OpenMP プログラムのデバッグ

14.  シグナルの処理

15.  dbx を使用してプログラムをデバッグする

16.  dbx を使用した Fortran のデバッグ

17.  dbx による Java アプリケーションのデバッグ

dbx と Java コード

Java コードに対する dbx の機能

Java コードのデバッグにおける dbx の制限事項

Java デバッグ用の環境変数

Java アプリケーションのデバッグの開始

クラスファイルのデバッグ

JAR ファイルのデバッグ

ラッパーを持つ Java アプリケーションのデバッグ

動作中の Java アプリケーションへの dbx の接続

Java アプリケーションを埋め込む C/C++ アプリケーションのデバッグ

JVM ソフトウェアへの引数の引き渡し

Java ソースファイルの格納場所の指定

C/C++ ソースファイルの格納場所の指定

独自のクラスローダーを使用するクラスファイルのパスの指定

Java メソッドにブレークポイントを設定する

ネイティブ (JNI) コードでブレークポイントを設定する

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

JVM ソフトウェアのパス名の指定

JVM ソフトウェアへの実行引数の引き渡し

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

コマンド行オプションを受け付ける独自のラッパーの利用

コマンド行オプションを受け付けない独自のラッパーの利用

64 ビット JVM ソフトウェアの指定

dbx の Java コードデバッグモード

Java または JNI モードからネイティブモードへの切り替え

実行中断時のモードの切り替え

Java モードにおける dbx コマンドの使用法

dbx コマンドにおける Java の式の評価

dbx コマンドが利用する静的および動的情報

構文と機能が Java モードとネイティブモードで完全に同じコマンド

Java モードで構文が異なる dbx コマンド

Java モードでのみ有効なコマンド

18.  機械命令レベルでのデバッグ

19.  dbx の Korn シェル機能

20.  共有ライブラリのデバッグ

A.  プログラム状態の変更

B.  イベント管理

C.  マクロ

D.  コマンドリファレンス

索引

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"