Tipos de fragmentos de sonda

Cada fragmento que definir necessita de uma especificação de tipo. O tipo indica quando o fragmento será executado nos métodos destino. Uma sonda pode conter mais de um fragmento, mas não mais de um fragmento de um tipo.

A tabela seguinte enumera e descreve os tipos de fragmentos e indica se o tipo pode ou não ser utilizado para determinada sonda de método ou callsite. (Para saber a distinção entre sondas de método e de callsite, consulte Sondas de método versus sondas de callsite.)
Tipo de fragmento Método ou Callsite Descrição
entry Método Os fragmentos entry são executados aquando da entrada do método. Os fragmentos entry não são executados no caso de métodos que tenham sido inseridos na classe pelo Probekit.
exit Método Os fragmentos exit são executados aquando da saída do método: uma saída normal, quando o método devolve uma excepção ou quando uma excepção devolvida se propaga para fora do método. Os fragmentos exit não são executados no caso de métodos que tenham sido inseridos na classe pelo Probekit.
catch Método Os fragmentos catch são executados no princípio de uma cláusula catch no método ou no princípio de uma cláusula finally que seja executada em resultado de uma excepção.
staticInitializer Método Os fragmentos staticInitializer são executados dentro do inicializador de classes de cada classe sondada. Se a classe não tiver um inicializador de classes, será criado um. Para mais informações, consulte Tipo de fragmento de sonda staticInitializer .
executableUnit Método Os fragmentos executableUnit são executados antes de cada unidade executável de código em métodos que correspondam à especificação de filtro e de destino da sonda, e para os quais esteja disponível código fonte. Se o método não tiver informações de linha origem, parecerá ter uma única unidade executável, numerada a zero. Para mais informações, consulte Tipo de fragmento de sonda executableUnit .
beforeCall Callsite Os fragmentos beforeCall são executados no método de chamada imediatamente antes de o método destino ser chamado. Não são válidos para sondas de método.
afterCall Callsite Os fragmentos afterCall são executados no método de chamada imediatamente após o método destino sair: quer por saída normal, quer quando o método destino devolver uma excepção. Não são válidos para sondas de método.
Nota:

Uma sonda pode ter vários fragmentos aplicáveis à mesma localização num método: por exemplo, um fragmento entry e a primeira localização executableUnit. Outro exemplo consiste num fragmento catch fragment e respectiva localização executableUnit, dado que as cláusulas catch para tratamento de excepções representam sempre o início de uma nova unidade executável. Nestes casos, o código do fragmento executableUnit é executado após o código do fragmento entry ou catch. Uma das consequências é que os fragmentos entry, se os houver, são sempre executados antes de outros tipos de fragmentos.

Não pode misturar fragmentos de método e de callsite numa única sonda, mas pode ter sondas de método e de callsite no mesmo ficheiro de origem Probekit (ficheiro probe).

Exemplo:

Para especificar um tipo de fragmento, seleccione uma entrada Fragmento na área de janela em árvore da página Sondas e faça uma selecção na lista Tipos de Fragmentos na área de janela de edição.

Editor do Probekit a destacar a selecção do Tipo de Fragmento

Encontram-se disponíveis informações adicionais sobre os seguintes tipos de fragmentos de sonda:
Referência relacionada
Código fonte Java do fragmento de sonda
Artigos de dados do fragmento de sonda