Elementos de datos de fragmento de sonda

Los elementos de datos de un fragmento son los nombres y tipos de elementos de datos a los que el código fuente del fragmento puede hacer referencia.

La especificación de elementos de datos es opcional. Un fragmento puede contener más de un elemento de datos, pero cada tipo de elemento sólo puede aparecer una vez.

Un elemento de datos tiene las siguientes propiedades:
Propiedad Descripción
Tipo de datos Obligatoria. Los tipos disponibles se muestran en la tabla siguiente.
Nombre Obligatoria. Debe especificar un nombre de variable Java válido. El código fuente del fragmento de sonda utilizará este nombre para hacer referencia a los datos indicados.
La tabla siguiente muestra y describe los tipos de datos disponibles en el editor de Probekit:
Tipo de datos tipo Descripción
className String

Para sondas de método, el nombre de clase del método sondeado, incluido el nombre de paquete, en formato interno; para sondas de sitio de llamada, el nombre de clase del método llamado.

Ejemplo: org/eclipse/tptp/SomeClass

methodName String

Para sondas de método, el nombre de método del método sondeado, en formato interno; para sondas de sitio de llamada, el nombre de método del método llamado.

Los constructores tienen el nombre de método <init>, y los inicializadores de clase estáticos tienen <clinit> como nombre de método.

methodSig String

La firma de tipo de retorno y argumento del método, en formato interno. No es válido para fragmentos staticInitializer.

Ejemplo: (Ljava/lang/String;)I

thisObject Object

El objeto this (para métodos de instancia) que se ha pasado al método probado. No es válido para fragmentos staticInitializer.

thisObject es null para métodos estáticos, para fragmentos entry que se aplican a constructores y para fragmentos exit aplicados a constructores cuando el constructor lanza una excepción.

args Object[]

Una matriz de referencias a Object que representan los argumentos del método probado. Hay un elemento de esta matriz para cada argumento del método (sin contar el argumento this). Los argumentos que son tipos primitivos están encuadrados en objetos temporales del tipo de referencia apropiado, como por ejemplo: Integer para int. Si el método no acepta argumentos, el tamaño de la matriz Object[] es cero.

Tenga en cuenta que los constructores de clases internas no estáticas tienen un argumento oculto por nivel "interno", de modo que la matriz de argumentos contendrá más elementos de los que aparecen en el código fuente. No es válido para fragmentos staticInitializer.

returnedObject Object Una referencia al objeto que se devuelve. Este tipo sólo está disponible para fragmentos exit y afterCall. Si el tipo de retorno del método probado es un tipo primitivo, el valor devuelto está enlazado a un objeto temporal del tipo de referencia apropiado. Si el método es void (no devuelve un valor) o si sale por una excepción, returnedObject es null.
exceptionObject Throwable Una referencia al objeto de excepción que se lanza. Este tipo sólo está disponible para fragmentos catch y exit. Si el método sale normalmente, exceptionObject es null.
isFinally boolean Un distintivo que indica si el fragmento se ha llamado desde una cláusula finally (true) o desde una cláusula catch (false). Sólo es válido en fragmentos catch.
staticField (varía) El objeto al que hace referencia el campo estático. Su tipo es el mismo tipo que se declaró en el objeto staticField. Sólo es válido si la sonda declara un staticField. (Consulte la sección Ejemplo de sonda de staticField y staticInitializer). No es válido para sondas de sitio de llamada.
classSourceFile String La información de nombre de archivo fuente disponible en los atributos de depuración del archivo de clase. Si no se dispone de información de fuente, classSourceFile es null. Para Java, el valor suele ser simplemente el nombre de archivo, sin información de vía de acceso. No es válido para sondas de sitio de llamada.
methodNames String

Una lista codificada de nombres y firmas de método. El orden de los métodos de esta lista es el mismo que el orden de los métodos de methodLineTables, y es el mismo que la ordenación reflejada por el elemento de datos methodNumber. La lista no incluye los nombres de los métodos que Probekit ha insertado en la clase.

La serie methodNames está formada por uno o más nombres y firmas de método, separados por un signo más ("+"). Las firmas de método están formato interno Java. Por ejemplo, una clase con dos métodos, un constructor por omisión y un método run que toma un tipo String y devuelve un int, tiene esta serie methodNames: <init>()V+run(Ljava/lang/String;)I

No es válido para sondas de sitio de llamada.

methodLineTables String Una lista codificada de números de línea que se corresponden con cada unidad ejecutable de código de la clase. La lista no incluirá las unidades ejecutables que Probekit ha insertado en la clase. Para obtener una descripción de la codificación, consulte la sección El formato de serie de datos methodLineTables. No es válido para sondas de sitio de llamada.
methodNumber Integer El número de índice de la tabla methodNames para el método en el que se ha insertado el fragmento de sonda. No es válido para sondas de sitio de llamada ni para fragmentos staticInitializer.
executableUnitNumber Integer El número de la unidad ejecutable en la que se ha insertado el fragmento de sonda. Este tipo de datos sólo es válido para los fragmentos de sonda executableUnit y catch. Si el método no tiene información de línea fuente, aparece como si tuviese una única unidad ejecutable, con el número cero.
Ejemplo:

Para especificar elementos de datos de fragmento de sonda, seleccione Fragmento en el panel de árbol y, a continuación, utilice Añadir y Editar para especificar y definir los elementos de datos en el panel de edición.

Editor de Probekit que muestra el aspecto de los elementos de datos de un fragmento

Consulta relacionada
Código fuente Java de fragmento de sonda
Tipos de fragmentos de sonda