Тип фрагмента датчика executableUnit позволяет собрать сведения о методах, отвечающих целевым спецификациям датчика, для которых указана информация об исходном коде.
Вызов этого типа фрагмента вставляется перед каждым исполняемым модулем целевого метода. Для методов, отвечающих целевым спецификациям, но не имеющих информации об исходном коде, фрагмент вставляется один раз при запуске метода.
Фрагменты executableUnit могут использовать все элементы данных кроме returnedObject, exceptionObject, isFinally и thisObject. Важно, что они могут использовать элемент данных executableUnitNumber, содержащий номер исполняемого модуля, который будет выполнен.
Число исполняемых модулей в методе и в таблицах строк не включает исполняемые модули, вставленные в метод с помощью Probekit.
Исполняемый модуль начинается при запуске каждого простого блока и в каждом байт-коде, номер строки исходного кода которого отличается от предыдущего байт-кода. Простой блок является областью инструкций байт-кода, в которой невозможны ветвления. После выполнения первой инструкции простого блока выполняются все остальные инструкции. Таким образом, инструкции считаются одной группой.
Простые блоки заканчиваются такими инструкциями, как branch, call, throw и return.
Некоторые инструкции, например divide, не считаются концом исполняемого модуля, несмотря на то, что в них может возникнуть исключительная ситуация. В этом заключается еще одно отличие исполняемого модуля от простого блока.
Если метод Java не содержит информации об исходном коде, то считается, что весь метод имеет только один исполняемый модуль.