O Formato da Cadeia methodLineTables

A cadeia de dados methodLineTables codifica uma tabela com uma entrada para cada unidade executável em uma classe.

O valor de cada entrada na tabela methodLineTables corresponde a um número de linha no arquivo de origem referenciado pela cadeia de dados classSourceFile, o número da linha de origem de uma unidade executável.

A seguir é apresentado um exemplo de uma cadeia methodLineTables:
#51+1201#75+11,41
A cadeia deve ser interpretada da seguinte maneira:
  • Os dígitos que seguem imediatamente um sinal de sustenido ("#") representam um número de linha completo no código fonte de uma classe. No exemplo, a primeira unidade executável no primeiro método na classe está na linha 51.
  • Cada dígito único que segue um sinal de adição ("+") representa o número de linhas a adicionar ao número de linha anterior, para produzir o número de linha para a próxima unidade executável. No exemplo, os dígitos que seguem o sinal de adição (+1201) são utilizados para calcular os números de linha para a segunda até a quinta unidade executável:
    1. 51 + 1 = o número de linha da segunda unidade executável: 52
    2. 52 + 2 = o número de linha da terceira unidade executável: 54
    3. 54 + 0 = o número de linha da quarta unidade executável: 54 (duas unidades executáveis em uma linha de origem)
    4. 54 + 1 = o número de linha da quinta unidade executável: 55
  • Quando um incremento de número de linha for negativo ou maior que nove, o número de linha completo da unidade executável está especificado. No exemplo, a sexta unidade executável está na linha 75, vinte a mais que o número de linha anterior, que era 55. Neste caso, o número de linha completo é especificado para a sexta unidade executável e o cálculo de número de linha relativo começa novamente (#75+11):
    1. 75 = o número de linha da sexta unidade executável
    2. 75 + 1 = o número de linha da sétima unidade executável: 76
    3. 76 + 1 = o número de linha da oitava unidade executável: 77
  • Uma vírgula (",") denota o fim de um método e o início do próximo. Os dígitos e símbolos que seguem a vírgula são interpretados como anteriormente. No exemplo, o número de linha da primeira unidade executável do segundo método é apenas 4 maior que o último número de linha calculado para o método anterior; assim, o cálculo de número de linha relativo continua após a vírgula (,41):
    1. 77 + 4 = o número de linha da primeira unidade executável do segundo método: 81
    2. 88 + 1 = o número de linha da segunda unidade executável do segundo método: 89
Nota: Nem todas as unidades executáveis terão informações de origem associadas a elas. Algumas são criadas pelo compilador para incrementar a semântica da linguagem Java; manipulação de exceções, inicialização ou sincronização, por exemplo. Essas unidades executáveis geradas terão um número de linha completo igual a zero na cadeia methodLineTables. Um número de linha completo zero indica que nenhuma informação de número de linha está disponível. Quando um método inteiro não possui informações de origem, ele aparecerá como tendo uma única unidade executável correspondente ao número de linha zero.
A seguir são apresentados alguns exemplos adicionais das cadeias methodLineTables e seus significados:
Cadeia de methodLineTables Significado
+5 Se o número de linha da primeira unidade executável do primeiro método for menor que dez, a cadeia inteira é iniciada com um sinal de adição para iniciar uma série de incrementos a partir da linha zero. Neste exemplo, a primeira unidade executável do primeiro método inicia na linha 5.
+0 Se o primeiro método não possuir informações de origem, a cadeia será iniciada com +0. Qualquer fragmento de probe executableUnit que se aplique a tal método será inserida apenas uma vez, no início do método.
...#437,#457+123... Se a primeira unidade executável de um método iniciar mais de nove linhas após a última unidade executável do método anterior, o padrão é uma vírgula, um sinal de sustenido e a cadeia do número de linha para a primeira unidade executável no novo método. Neste exemplo parcial, a primeira unidade executável no novo método inicia 20 linhas após a última unidade executável do método anterior.
...#437,+2... É possível que a última unidade executável em um método requeira a notação "#" e a primeira unidade executável no próximo método esteja a uma pequena distância. Neste exemplo parcial, a última unidade executável de um método inicia na linha 437 e a primeira unidade executável do próximo método inicia na linha 439.

Tópico Pai: Referência de Elemento de Probekit

Referências Relacionadas
O Objeto Data da Probe

Termos de Uso | Feedback
(C) Copyright IBM Corporation 2000, 2004. Todos os Direitos Reservados.