O tipo de fragmento de sonda executableUnit permite efectuar uma colecta de dados muito exacta de métodos que correspondam às especificações de destino da sonda e que tenham informações de código fonte disponíveis.
É inserida uma chamada para este tipo de fragmento antes de cada unidade executável no método destino. No caso de métodos que correspondam às especificações de destino da sonda mas não tenham informações de código fonte, o fragmento é inserido uma vez, no início do método.
Um fragmento executableUnit pode utilizar todos os tipos de artigos de dados excepto returnedObject, exceptionObject, isFinally e thisObject. Mais importante, pode utilizar o artigo de dados executableUnitNumber, o qual contém o número da unidade executável que vai executar.
O número de unidades executáveis num método e nas tabelas de linhas não inclui unidades executáveis inseridas num método pelo Probekit.
Uma unidade executável começa no início de cada bloco básico e em cada código de byte cujo número de linha origem seja diferente do código de byte anterior. Um bloco básico consiste numa região de instruções de código de byte que não pode ser ramificada nem receber ramificações. Quando é executada a primeira instrução num bloco básico, todas as inbstruções são executadas, de modo que estas são consideradas como um único grupo.
Os blocos básicos terminam com instruções como, por exemplo, branch, call, throw, e return.
Algumas instruções como, por exemplo, divide, não são consideradas como final de uma unidade executável, apesar do facto de poderem devolver uma excepção. Esta é uma das maneiras em que uma unidade executável se distingue tecnicamente de um bloco básico.
Se um método Java não tiver nenhumas informações de origem associadas, o método inteiro será considerado como tendo somente uma unidade executável.