Probekit es una infraestructura de la plataforma Eclipse que puede utilizarse para
escribir y utilizar sondas. Las sondas son fragmentos de código Java™ que pueden insertarse en un programa
para suministrar información acerca del programa a medida que se ejecuta.
Para entender qué son las sondas, empiece por la sonda de ejemplo descrita aquí. Es
una sonda básica que imprime un mensaje que identifica todos los métodos a los que se
llama cuando se ejecuta el programa.
Las sondas se definen mediante entradas efectuadas en el editor de
Probekit. Este ejemplo contiene un solo fragmento; los
fragmentos determinan la
acción que realiza la sonda. Las definiciones de fragmento incluyen:
- Una
especificación del tipo de fragmento. Este fragmento es un fragmento de
entrada, lo que significa que se ejecuta durante la entrada del método.
- Elementos de datos a los que el fragmento puede acceder. Aquí, los
elementos de datos permiten al fragmento acceder a nombres de clase y método.
- El fragmento de código Java que define la lógica de la sonda.
Este
fragmento llama a System.out.println para visualizar el nombre de la clase y
método de los métodos que se ejecutan.
Este es el aspecto de la sonda en el editor de Probekit:

Una vez creada una sonda mediante el editor de Probekit, puede aplicarla a los
archivos class y jar del proyecto. A continuación, cuando ejecute el proyecto, el código
del fragmento se ejecutará junto con el programa.
A continuación se ofrece una visión general de la creación y utilización
de sondas, incluida la información acerca de la ayuda facilitada por Probekit:
- El
editor de Probekit se utiliza para crear sondas en archivos fuente de Probekit.
Los archivos fuente de Probekit deben tener la extensión .probe. Pueden contener
una o varias sondas, cada una de las cuales puede contener uno o más fragmentos de
sonda.
- Probekit ensambla los fragmentos de sonda en un conjunto de métodos Java y, a
continuación, los compila. Cuando Probekit compila una sonda, combina los fragmentos de
sonda con código modelo Java estándar y genera código fuente Java para una clase de sonda
nueva. Las funciones generadas a partir de los fragmentos de sonda
aparecen
como métodos estáticos de la clase de sonda generada.
- Al aplicar una sonda, se especifican archivos class y jar destino que se desea
investigar. El motor BCI (instrumentación de códigos de bytes) de Probekit hace
referencia a la lista
de sondas disponibles y a sus patrones destino e inserta las llamadas a métodos de
fragmento de sonda en los programas destino. El proceso de insertar sentencias de llamada en métodos destino se denomina
instrumentación.
Una clase que contiene un método instrumentado se denomina clase sondeada.
Los elementos de datos solicitados por un fragmento de sonda (por ejemplo, el nombre de
clase y el nombre de método) se pasan como argumentos.
- Después de instrumentar la aplicación. Los
fragmentos de sonda se ejecutarán cuando lo haga el programa.
El
tipo del fragmento de sonda determina cuándo se
ejecuta un fragmento. Puede especificar tipos que provoquen la ejecución del fragmento en
los siguientes casos:
- Durante la entrada del método.
- Durante la salida del método (ya sea un retorno normal o como resultado de una
excepción).
- Durante la ejecución del manejador de excepciones; es decir, al principio de una
cláusula catch o de una cláusula finally a la que se llama como
resultado de una excepción.
- Antes del código original del inicializador estático de clases.
- Antes de cada unidad de código ejecutable (cuando la información del código fuente
está disponible).
- Cuando se llama a métodos específicos. (En este caso, la instrumentación se realiza
en la ubicación de la llamada, no dentro del método llamado).
Los fragmentos de sonda pueden acceder a elementos de datos que proporcionan distintas informaciones
acerca de la aplicación en el punto en el que se insertan. Por ejemplo:
- Paquete, clase y nombre de método
- Firma de método
- Objeto this
- Argumentos
- Valor de retorno
Si desea aplicar una sonda sólo a determinadas clases y métodos, especifique destinos o disponga filtros. Para
obtener más información, consulte la sección Destinos y filtros de sondas.