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