Il tipo di frammento probe executableUnit consente di eseguire una raccolta capillare di dati relativi ai metodi che soddisfano le specifiche della destinazione del probe e che forniscono informazioni sul codice di origine.
Una chiamata a questo tipo di frammento viene inserita prima di ciascuna unità eseguibile nel metodo di destinazione. Per i metodi che soddisfano le specifiche della destinazione del probe, ma che non dispongono di informazioni di codice di origine, il frammento viene inserito una sola volta, all'inizio del metodo.
I frammenti executableUnit possono utilizzare tutti i tipi di elementi dati, fatta eccezione per returnedObject, exceptionObject, isFinally, e thisObject. Ancor più importante, possono utilizzare l'elemento di dati executableUnitNumber che contiene il numero di unità eseguibili che stanno per essere eseguite.
Il numero di unità eseguibili in un metodo e nella tabella di righe non comprendono le unità eseguibili inserite nel metodo da Probekit.
Un'unità eseguibile comincia all'inizio di ciascun blocco di base e in ogni codice byte il cui codice di origine è differente da quello precedente. Un blocco di base è un'area di istruzioni del codice byte che non è possibile né estendere né ridurre. Quando la prima istruzione di un blocco di base viene eseguita, vengono eseguite tutte le istruzioni: in tal modo, le istruzioni verranno considerate come un unico gruppo.
Alcune delle istruzioni con le quali terminano i blocchi di base sono branch, call, throw e return.
Alcune istruzioni, ad esempio divide, non vengono considerate parte finale di un'unità eseguibile, nonostante possano lanciare un'eccezione. È questo un aspetto che evidenzia la differenza, da un punto di vista tecnico, tra un'unità eseguibile e un blocco di base.
Se un metodo Java è privo di informazioni di origine, l'intero metodo viene considerato come se disponesse di una sola unità eseguibile.