定義するそれぞれのフラグメントには、タイプ指定が必要です。タイプは、フラグメントをターゲット・メソッドでいつ実行するかを示します。プローブには、複数のフラグメントを組み込むことができます。ただし、特定のタイプの複数のフラグメントを組み込むことはできません。
フラグメント型 | メソッドまたは呼び出しサイト | 説明 |
---|---|---|
entry | メソッド | entry フラグメントは、メソッド入り口で実行します。entry フラグメントは、Probekit によってクラスに挿入されたメソッドでは実行されません。 |
exit | メソッド | exit フラグメントは、メソッドの終了時、すなわち、 正常終了したとき、メソッドが例外をスローしたとき、またはスローされた例外がメソッドの外に波及したときに実行されます。exit フラグメントは、Probekit によってクラスに挿入されたメソッドでは実行されません。 |
catch | メソッド | catch フラグメントは、メソッド内の catch 文節の最初、または例外の結果として実行される finally 文節の最初で実行されます。 |
staticInitializer | メソッド | staticInitializer フラグメントは、各プローブ済みクラスのクラス・イニシャライザーの内部で実行されます。クラスにまだ静的イニシャライザーがない場合は、新たに作成されます。詳しくは、『staticInitializer プローブ・フラグメント型』を参照してください。 |
executableUnit | メソッド | executableUnit フラグメントは、 プローブのターゲットおよびフィルター指定と一致してソース・コードが使用可能なメソッド内の、 各実行可能ユニットコードより先に実行されます。メソッドにソース行情報がない場合、番号 0 の実行可能ユニットを 1 つ持つものとして表されます。詳しくは、『executableUnit プローブ・フラグメント型』を参照してください。 |
beforeCall | Callsite | beforeCall フラグメントは、ターゲット・メソッドが呼び出される直前に、呼び出し元メソッドで実行されます。メソッド・プローブでは無効です。 |
afterCall | Callsite | afterCall フラグメントは、ターゲット・メソッドが終了した直後、すなわち、正常終了時、またはターゲット・メソッドが例外をスローした直後に、呼び出し元メソッドで実行されます。メソッド・プローブでは無効です。 |
プローブには、メソッド内の同じロケーションに適用する複数のフラグメントを持たせることができます。例えば、entry フラグメントと最初の executableUnit のロケーションです。また、例外処理の catch 文節は常に新しい実行可能ユニットの始まりを表すため、catch フラグメントとその関連の executableUnit のロケーションも、もう 1 つの例として挙げられます。これらの場合、executableUnit フラグメントのコードは、entry または catch フラグメントのコードの後で実行されます。これにより、entry フラグメントがある場合、それは常に、その他の種類のフラグメントの前に実行されます。
1 つのプローブ内でメソッド・フラグメントと呼び出しサイト・フラグメントの両方を使用することはできません。 ただし、同一の Probekit ソース・ファイル (プローブ・ファイル) にメソッド・プローブおよび Callsite プローブを入れることはできます。
フラグメント型を指定するには、 「プローブ」ページのツリー・ペインでフラグメント・エントリーを選択し、 編集ペインの「フラグメント型 (Fragment Type)」リストから選択します。