Med probefragmenttypen executableUnit kan du utføre finkornet datainnsamling for metoder som samsvarer med probens målspesifikasjoner, og som har tilgjengelig kildekodeinformasjon.
Et kall til denne typen fragment blir satt inn før hver utførbare enhet i målmetoden. For metoder som samsvarer med probens målspesifikasjoner, men som ikke har noe kildekodeinformasjon, blir fragmentet satt inn en gang, ved begynnelsen av metoden.
Et executableUnit-fragment kan bruke alle dataelementtyper unntatt returnedObject, exceptionObject, isFinally og thisObject. Og viktigst av alt, det kan bruke executableUnitNumber-dataelementet, som inneholder nummeret på den utførbare enheten som er i ferd med å kjøres.
Antall utførbare enheter i en metode og i linjetabellene inkluderer ikke utførbare enheter som er satt inn i metoden av Probekit.
En utførbar enhet begynner ved begynnelsen av hver grunnleggende blokk, og ved hver bytekode der kildelinjenummeret er forskjellig fra den forrige bytekoden. En grunnleggende blokk er en region med bytekodeinstruksjoner som det ikke kan være forgreninger ut av eller inn i. Når den første instruksjonen i en grunnleggende blokk kjøres, blir alle instruksjonene utført, og instruksjonene blir sett på som en enkelt gruppe.
Grunnleggende blokker slutter på instruksjoner som branch, call, throw og return.
Noen instruksjoner, for eksempel divide, blir ikke sett på som slutten på en utførbar enhet, til tross for at de kan kaste et unntak. I den henseende er ikke en utførbar enhet teknisk sett det samme som en grunnleggende blokk.
Hvis en Java-metode ikke har noe tilknyttet kildeinformasjon, blir hele metoden oppfattet som om den har bare en utførbar enhet.