Tipos de Fragmento de Probe

Cada fragmento definido requer uma especificação de tipo. O tipo indica quando o fragmento será executado nos métodos de destino. Um probe pode conter mais de um fragmento, mas não pode conter mais de um fragmento de qualquer tipo fornecido.

A tabela a seguir lista e descreve os tipos de fragmentos e indica se o tipo pode ser utilizado para um método ou probe callsite. (Para obter a distinção entre probes de método e probes callsite, consulte Probes de Método Versus Probes callsite).
Tipo de fragmento Método ou Callsite Descrição
entry Método Fragmentos entry são executados na entrada do método. Fragmentos entry não serão executados para métodos inseridos na classe pelo Probekit.
exit Método Fragmentos exit são executados no método exit: uma saída normal, quando o método emite uma exceção ou quando uma exceção emitida é propagada fora do método. Fragmentos exit não serão executados para métodos que foram inseridos na classe pelo Probekit.
catch Método Fragmentos catch são executados no início de uma cláusula catch no método ou no início de uma cláusula finally que é executada como resultado de uma exceção.
staticInitializer Método Fragmentos staticInitializer são executados dentro do inicializador de classe de cada classe com probe. Se a classe ainda não tiver um inicializador estático, será criado um. Para obter informações adicionais, consulte O Tipo de Fragmento de Probe staticInitializer.
executableUnit Método Fragmentos executableUnit são executados antes de cada unidade de código executável em métodos que correspondem ao destino do probe e à especificação do filtro, e para o qual o código fonte está disponível. Se o método não tiver informações sobre a linha de origem, ele parecerá ter uma única unidade executável, numerada com zero. Para obter informações adicionais, consulte O Tipo de Fragmento de Probe executableUnit.
beforeCall Callsite Fragmentos beforeCall são executados no método de chamada imediatamente antes do método de destino ser chamado. Não válido para probes de método.
afterCall Callsite Fragmentos afterCall são executados no método de chamada imediatamente após a saída do método de destino: uma saída normal ou quando o método de destino emite uma exceção. Não válido para probes de método.
Nota:

Um probe pode possuir vários fragmentos que se aplicam ao mesmo local em um método: por exemplo, um fragmento entry e o primeiro local executableUnit. Outro exemplo é um fragmento catch e seu local associado executableUnit, porque as cláusulas catch para manipulação de exceção sempre representam o início de uma nova unidade executável. Nesses casos o código de fragmento executableUnit será executado depois do código do fragmento entry ou catch. Uma conseqüência é que os fragmentos entry, se presentes, sempre serão executados antes de outros tipos de fragmentos.

Não é possível misturar fragmentos de método e fragmentos callsite em um único probe, mas é possível ter probes de método e probes callsite no mesmo arquivo de origem Probekit (arquivo probe).

Exemplo:

Para especificar um tipo de fragmento, selecione uma entrada Fragmento na área de janela de árvore da página Probes e faça uma seleção da lista Tipo de Fragmento na área de janela de edição.

O Editor Probekit Realçando a Seleção do Tipo de Fragmento

Informações adicionais estão disponíveis sobre os seguintes tipos de fragmentos de probe:
Referência Relacionada
Código Fonte Java do Fragmento de Probe
Itens de Dados de Fragmento de Probe