O Tipo de Fragmento de Probe executableUnit

O tipo de fragmento de probe executableUnit permite executar a coleta de dados granulados para métodos que correspondem às especificações de destino do probe e que têm informações do código fonte disponíveis.

Uma chamada para esse tipo de fragmento é inserida antes de cada unidade executável no método de destino. Para métodos que correspondem às especificações de destino do probe, mas que não têm nenhuma informação de código fonte, o fragmento é inserido uma vez, no início do método.

Um fragmento executableUnit pode utilizar todos os tipos de itens de dados exceto returnedObject, exceptionObject, isFinally e thisObject. O mais importante é que ele pode utilizar o item de dados executableUnitNumber que contém o número da unidade executável que está prestes a ser executada.

O número de unidades executáveis em um método e nas tabelas de linha não inclui unidades executáveis inseridas no método pelo Probekit.

Unidades Executáveis e Blocos Básicos

Um 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 de origem é diferente do código de byte anterior. Um bloco básico é uma região de instruções do código de byte que não podem ser ramificadas para fora ou para dentro. Quando a primeira instrução em um bloco básico é executada, todas as instruções são executadas, para que sejam consideradas como um único grupo.

Os blocos básicos terminam com instruções como branch, call, throw e return.

Algumas instruções, como divide, não são consideradas como sendo o final de uma unidade executável, apesar de poderem emitir uma exceção. Esta é uma maneira pela qual uma unidade executável não é tecnicamente a mesma de um bloco básico.

Se um método Java não tiver nenhuma informação de origem associada, o método inteiro será considerado como tendo apenas uma unidade executável.

Referência Relacionada
Fragmentos de Probe
Informações Relacionadas
Um Exemplo de Fragmento de Probe executableUnit