Fault Analyzer JVMTI エージェントの使用
Fault Analyzer は JVMTI (JVM Tool Interface) エージェントを提供します。このエージェントは Java™ 仮想マシン (JVM) の内部で実行し、実行中の Java™ アプリケーションの状態を検査することができます。
Fault Analyzer エージェントは次のコマンドライン・オプションを使用して起動時に追加されます。
java -agentpath:<path-to-agent> <java Class Name>
例えば、エージェントを使用して、「HelloWorld」を実行する次のコマンドを指定できます。
java -agentpath:IDIJAGNT.so HelloWorld
- Java™ インスツルメンテーション API を使用して、起動後にエージェントを追加できますか。
- いいえ、Fault Analyzer エージェントは JVM の初期化前のみ使用可能な特定の JVMTI 機能を要求します。
- Fault Analyzer エージェントは何を行いますか。
- JVM が起動すると、エージェントは JVM により使用可能になるローカル変数についての情報を要求します。これは、JVM がフルスピード・デバッグ (FSD) モードで実行することを示しています。
すべての例外に対し、エージェントは既知の catch ブロックがあるかどうかをチェックします。ない場合、エージェントは現在のスレッド・スタック・フレームのローカル変数を含む障害項目を作成します。
- エージェントが抽出するのは何の情報ですか。
- エージェントはすべてのアクセス可能なローカル変数を現在のスレッドとともに取得します。収集される具体的な情報は、現在実行しているスタック・フレームの種類によって異なります。
- Java インスタンス・フレーム:
- 実行中の行およびファイル名が抽出されます。
- すべてのローカル変数のタイプ、名前、および値が抽出されます。
- ローカル・インスタンスの、修飾子、タイプ、名前、および値を含む、すべてのフィールドが抽出されます。
- Java 静的フレーム:
- 実行中の行およびファイル名が抽出されます。
- すべてのローカル変数のタイプ、名前、および値が抽出されます。
- メソッドのクラスを宣言する、静的フィールド修飾子、タイプ、名前。および値を含む、静的フィールド。
- ネイティブ・フレーム:
- 「ローカル・インスタンス」の、修飾子、タイプ、名前、および値を含む、フィールドが抽出されます。
- 静的ネイティブ・フレーム:
- メソッドのクラスを宣言する、静的フィールド修飾子、タイプ、名前。および値を含む、静的フィールド。
- Java インスタンス・フレーム:
- Java プログラムが JNI を使用して COBOL プログラムを呼び出して、異常終了しました。エージェントはこれを報告しますか。
- いいえ、JVMTI API は Java™ 例外へのアクセスのみを許可します。異常終了が発生すると、JVM はアクティブではなくなり、ローカル変数名に関する情報は使用できなくなります。
- Fault Analyzer は JNI 異常終了に対して何をレポートできますか。
- Fault Analyzer は DTFJ API を使用した事後分析を実行します。
DTFJ API はローカル変数情報のサブセットへのアクセスを許可します。具体的には、JavaStackFrame インターフェースにより戻されるすべてのオブジェクト・リファレンスです。この API は変数名を提供しません。オブジェクト値のみです。
JavaStackFrame および DTFJ API に関する詳細は、「IBM® SDK, Java™ Technology Edition」を参照してください。