Artigos de dados de fragmentos de sonda

Os artigos de dados de um fragmento são os nomes e os tipos de artigos de dados que o código fonte do fragmento pode referenciar.

A especificação de artigos de dados é opcional. Um fragmento pode conter mais do que um artigo de dados, mas cada tipo de artigo só pode aparecer uma vez.

Um artigo de dados inclui as seguintes propriedades:
Propriedade Descrição
Tipo de Dados Necessário. Os tipos disponíveis encontram-se enumerados na tabela seguinte.
Nome Necessário. Deve especificar um nome de variável Java válido. O código fonte do fragmento de sonda utiliza este nome para remeter para os dados indicados.
A tabela seguinte enumera e descreve os tipos de dados disponíveis através do editor do Probekit:
Tipo de Dados tipo Descrição
className Cadeia de caracteres

No caso de sondas de método, o nome da classe do método sondado, incluindo o nome do pacote, em formato interno. No caso de sondas de callsite, o nome da classe do método chamado.

Exemplo: org/eclipse/tptp/SomeClass

methodName Cadeia de caracteres

No caso de sondas de método, o nome do método do método sondado, em formato interno. No caso de sondas de callsite, o nome do método do método chamado.

Os construtores têm o nome de método <init> e os inicializadores de classes estáticas têm o nome de método <clinit>.

methodSig Cadeia de caracteres

A assinatura do tipo de retorno e argumento do método, em formato interno. Não é válido para fragmentos staticInitializer.

Exemplo: (Ljava/lang/Cadeia de caracteres;)I

thisObject Objecto

O objecto (este) que foi transmitido para o método sondado. Não é válido para fragmentos staticInitializer.

thisObject é null para métodos estáticos, para fragmentos entry que são aplicados a construtores, e para fragmentos exit aplicados a construtores quando o construtor devolver uma excepção.

args Object[]

Uma matriz de referências Object representando os argumentos para o método sondado. Existe um elemento nesta matriz para cada argumento para o método (sem contar com o argumento this). Os argumentos que sejam tipos primitivos são encaixados em objectos temporários do tipo de referência apropriado, por exemplo: Número inteiro para int. Se o método não comportar argumentos, o tamanho da matriz de Object[] será zero.

Repare que os construtores para classes internas não estáticas têm um argumento oculto por nível "interno", de modo que a matriz de argumentos irá conter mais elementos do que aparecem no código fonte. Não é válido para fragmentos staticInitializer.

returnedObject Objecto Uma referência ao objecto a ser devolvido. Este tipo está disponível somente para fragmentos exit e afterCall. Se o tipo de retorno do método sondado for primitivo, o valor devolvido é associado a um objecto temporário do tipo de referência apropriado. Se o método for void (não devolver valor nenhum) ou se sair por excepção, returnedObject será null.
exceptionObject Devolutivo Uma referência ao objecto de excepção a ser devolvido. Este tipo está disponível somente para fragmentos catch e exit. Se o método sair normalmente, exceptionObject será null.
isFinally booleano Um sinalizador indicando se o fragmento foi chamado de uma cláusula finally (verdadeira) ou de uma cláusula catch (falsa). Válido somente em fragmentos catch.
staticField (varia) O objecto ao qual se refere o campo estático. O tipo é o mesmo tipo que tenha sido declarado no objecto staticField. Só é válido se a sonda declarar um staticField. (Consulte Exemplo de sonda staticField e staticInitializer.) Não são válidos para sondas de callsite.
classSourceFile Cadeia de caracteres As informações sobre o nome do ficheiro de origem disponíveis a partir dos atributos de depuração do ficheiro de classes. Caso não haja informações de origem, classSourceFile será null. Para Java o valor geralmente é só o nome do ficheiro sem informações de caminho. Não são válidos para sondas de callsite.
methodNames Cadeia de caracteres

Uma lista codificada de nomes e assinaturas de métodos. A ordem dos métodos nesta lista é a mesma que a ordem dos métodos em methodLineTables, e é a mesma que a ordem reflectida pelo artigo de dados methodNumber. A lista não inclui os nomes de métodos que tenham sido inseridos na classe pelo Probekit.

A cadeia de caracteres methodNames consiste em um ou mais nomes e assinaturas de métodos, separados pelo sinal + (mais). As assinaturas de métodos são em formato interno Java. Por exemplo, uma classe com dois métodos, um construtor predefinido, um método run que leve uma Cadeia de caracteres e devolva um int, tem esta cadeia de caracteres methodNames: <init>()V+run(Ljava/lang/String;)I

Não são válidos para sondas de callsite.

methodLineTables Cadeia de caracteres Uma lista codificada d enúmeros de linha que correspondem a cada unidade executável de código na classe. A lista não inclui unidades executáveis que tenham sido inseridas na classe pelo Probekit. Para uma explicação da codificação, consulte O formato de cadeia de caracteres de dados methodLineTables. Não são válidos para sondas de callsite.
methodNumber Número inteiro O número do índice na tabela methodNames relativa ao método no qual foi inserido o fragmento de sonda. Não é válido para sondas de callsite ou fragmentos staticInitializer.
executableUnitNumber Número inteiro O número da unidade executável em que foi inserido o fragmento de sonda. Este tipo de dados só é válido para fragmentos de sonda executableUnit e catch. Se o método não tiver informações de linha origem, parecerá ter uma única unidade executável, numerada a zero.
Exemplo:

Para introduzir artigos de dados de fragmento de sonda, seleccione Fragmento na área de janela dem árvore e utilize Adicionar e Editar para introduzir e definir os artigos de dados na área de janela de edição.

O editor do Probekit mostra o aspecto dos artigos de dados de um fragmento

Referência relacionada
Código fonte Java do fragmento de sonda
Tipos de fragmentos de sondas