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

印刷ビューの終了

更新: 2016 年 6 月
 
 

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

    Java アプリケーションのデバッグの場合、dbx は次の 3 つのモードのいずれかで動作します。

  • Java モード

  • JNI モード

  • ネイティブモード

dbx が Java モードまたは JNI (Java Native Interface) モードにある場合は、Java アプリケーション (JNI コードを含む) の状態を検査したり、コードの実行を制御したりすることができます。ネイティブモードでは、C または C++ JNI コードの状態を調べることができます。現在のモード (javajni、または native) は、環境変数 jdbx_mode に格納されます。

Java モードでは、Java 構文を使用して dbx と対話します。dbx も Java 構文を使用して情報を提供します。このモードは、純粋な Java コードか、Java コードと C JNI または C++ JNI コードが混在するアプリケーション内の Java コードのデバッグに使用します。

JNI モードでは、dbx はネイティブの構文を使用して、ネイティブコードにだけ作用しますが、コマンドの出力には、ネイティブのステータスばかりでなく、Java 関係のステータスも示されるため、JNI モードは「混在」モードです。このモードは、Java コードと C JNI または C++ JNI コードが混在するアプリケーションのネイティブ部分のデバッグに使用します。

ネイティブモードでは、dbx コマンドはネイティブプログラムにのみ影響を与えるため、Java に関連したすべての機能が無効になります。このモードは Java が関係しないプログラムのデバッグに使用します。

Java アプリケーションを実行すると、dbx は状況に応じて Java モードと JNI モードを自動的に切り替えます。たとえば、Java ブレークポイントを検出すると、dbx は Java モードに切り替わり、Java コードから JNI コードに入ると、JNI モードに切り替わります。

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

dbx は、自動的にはネイティブモードに切り替わりません。joff コマンドを使用して Java または JNI モードからネイティブモードに、また jon コマンドを使用してネイティブモードから Java モードに明示的に切り替えることができます。

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

Java アプリケーションの実行を (たとえば、Ctrl + C キーを押すことによって) 中断すると、dbx はアプリケーションを安全な状態に置き、すべてのスレッドを中断することによって、自動的にモードを Java/JNI モードに設定しようとします。

アプリケーションを一時停止して Java/JNI モードに切り替えることができない場合、dbx はネイティブモードに切り替わります。その場合は、プログラムの状態を検査できるように、jon コマンドを使用して Java モードに切り替えることができます。