executableUnit プローブ・フラグメントを使用することで、プローブのターゲットおよびフィルター指定と一致し、ソース・コード情報が使用可能なメソッドに対し、きめ細かいデータ収集を実行できます。
このタイプのフラグメントの呼び出しは、ターゲット・メソッド内の各「実行可能単位」の前に挿入されます。 プローブのターゲットおよびフィルター指定と一致するが、ソース・コード情報のないメソッドの場合、フラグメントはメソッドの開始時に一度挿入されます。
executableUnit フラグメントは、returnedObject、exceptionObject、isFinally、および thisObject 以外のすべてのデータ項目タイプを使用することができます。 もっとも重要なのは、これから実行しようとする実行可能単位の番号を含む executableUnitNumber データ項目を使用できることです。
メソッド内および行テーブル内の実行可能単位の数には、Probekit によってそのメソッドに挿入された実行可能単位は含まれません。
実行可能単位は、各基本ブロックの始まりで、前のバイト・コードとソース行番号が異なる各バイト・コードから始まります。 基本ブロックとは、分岐して実行することのできないバイト・コード命令の領域です。 基本ブロック内の最初の命令が実行されるときに、すべての命令が実行されるので、複数の命令が単一のグループと見なされます。
基本ブロックは、branch、call、throw、return 命令によって終了します。
命令の中には、例外をスローできるという事実にも関わらず、「divide」のように実行可能単位の終わりとは見なされないものもあります。 これは、実行可能単位が技術的に基本ブロックと同じではないことを示す、もう 1 つの例です。
Java メソッドが関連のソース情報を持っていない場合、メソッド全体で、実行可能単位を 1 つだけ持っていると見なされます。