Tipos de fragmentos de sonda

Cada fragmento definido requiere una especificación de tipo. El tipo indica cuándo se ejecutará el fragmento en los métodos destino. Una sonda puede contener más de un fragmento, pero no puede contener más de un fragmento de un tipo determinado.

La tabla siguiente muestra y describe los tipos de fragmentos e indica si el tipo puede utilizarse para una sonda de método o de sitio de llamada. (Para conocer la diferencia entre las sondas de método y las de sitio de llamada, consulte la sección Sondas de método frente a sondas de sitio de llamada).
Tipo de fragmento Método o sitio de llamada Descripción
entry Método Los fragmentos entry se ejecutan en la entrada de método. Los fragmentos entry no se ejecutarán para los métodos que Probekit ha insertado en la clase.
exit Método Los fragmentos exit se ejecutan en la salida de método: puede ser una salida normal, cuando el método lanza una excepción, o bien cuando una excepción lanzada se propaga fuera del método. Los fragmentos exit no se ejecutarán para los métodos que Probekit ha insertado en la clase.
catch Método Los fragmentos catch se ejecutan al principio de una cláusula catch del método, o bien al principio de una cláusula finally que se ejecuta como resultado de una excepción.
staticInitializer Método Los fragmentos staticInitializer se ejecutan dentro del inicializador de cada clase sondeada. Si la clase todavía no tiene un inicializador estático, se creará uno. Para obtener más información, consulte la sección El tipo de fragmento de sonda staticInitializer.
executableUnit Método Los fragmentos executableUnit se ejecutan antes de cada unidad ejecutable de código en los métodos que coinciden con la especificación de destino y filtro de la sonda, y para los que se dispone de código fuente. Si el método no tiene información de línea fuente, aparecerá como si tuviese una única unidad ejecutable, con el número cero. Para obtener más información, consulte la sección El tipo de fragmento de sonda executableUnit.
beforeCall Sitio de llamada Los fragmentos beforeCall se ejecutan en el método llamante inmediatamente antes de que se llame al método destino. No son válidos para sondas de método.
afterCall Sitio de llamada Los fragmentos afterCall se ejecutan en el método llamante inmediatamente después de la salida del método destino: puede ser una salida normal o cuando el método de destino lanza una excepción. No son válidos para sondas de método.
Nota:

Una sonda puede tener varios fragmentos que se aplican a la misma ubicación de un método: por ejemplo, un fragmento entry y la primera ubicación executableUnit. Otro ejemplo es un fragmento catch y su ubicación executableUnit asociada, ya que las cláusulas catch de manejo de excepciones siempre representan el inicio de una nueva unidad ejecutable. En estos casos, el código del fragmento executableUnit se ejecutará después del código del fragmento entry o catch. Una consecuencia es que los fragmentos entry, si están presentes, siempre se ejecutarán antes que otros tipos de fragmentos.

No pueden mezclarse fragmentos de método y fragmentos de sitio de llamada en una misma sonda, pero puede haber sondas de método y sondas de sitio de llamada en el mismo archivo fuente de Probekit (archivo probe).

Ejemplo:

Para especificar un tipo de fragmento, seleccione una entrada de Fragmento en el panel de árbol de la página Sondas y efectúe una selección en la lista Tipo de fragmento del panel de edición.

Editor de Probekit con la selección Tipo de fragmento resaltada

Puede encontrar información adicional acerca de los siguientes tipos de fragmentos de sonda:
Consulta relacionada
Código fuente Java de fragmento de sonda
Elementos de datos de un fragmento de sonda