El valor de cada entrada en la tabla methodLineTables corresponde a un número de línea del archivo de origen al que se hace referencia mediante la cadena de caracteres de datos classSourceFile, el número de línea de origen de una unidad ejecutable.
A continuación se ofrece un ejemplo de una cadena de caracteres methodLineTables:
#51+1201#75+11,41
A continuación se explica cómo interpretar la cadena de caracteres:
- Los dígitos que siguen inmediatamente a un signo de número ("#") representan un número de línea completo en el código fuente de una clase. En el ejemplo, la primera unidad ejecutable del primer método de la clase está en la línea 51.
- Cada dígito individual que sigue a un signo más ("+") representa el número de líneas que deben añadirse al número de línea anterior para obtener el número de línea de la siguiente unidad ejecutable. En el ejemplo, los dígitos que siguen al signo más (+1201) se utilizan para calcular los números de línea de la segunda a la quinta unidad ejecutable:
- 51 + 1 = el número de línea de la segunda unidad ejecutable: 52
- 52 + 2 = el número de línea de la tercera unidad ejecutable: 54
- 54 + 0 = el número de línea de la cuarta unidad ejecutable: 54 (dos unidades ejecutables en una línea de origen)
- 54 + 1 = el número de línea de la quinta unidad ejecutable: 55
- Cuando un incremento de número de línea es negativo o mayor que nueve, se especifica el número de línea completo de la unidad ejecutable. En el ejemplo, la sexta unidad ejecutable está en la línea 75, veinte números mayor que el número de línea anterior, que era 55. En este caso, se especifica el número de línea completo para la sexta unidad ejecutable y el cálculo del número de línea relativo vuelve a empezar (#75+11):
- 75 = el número de línea de la sexta unidad ejecutable
- 75 + 1 = el número de línea de la séptima unidad ejecutable: 76
- 76 + 1 = el número de línea de la octava unidad ejecutable: 77
- Una coma (",") indica el final de un método y el principio del siguiente. Los dígitos y los símbolos que siguen a la coma se interpretan como antes. En el ejemplo, el número de línea de la primera unidad ejecutable del segundo método es sólo 4 números mayor que el último número de línea calculado para el método anterior, de modo que el cálculo del número de línea relativo continúa después de la coma (,41):
- 77 + 4 = el número de línea de la primera unidad ejecutable del segundo método: 81
- 88 + 1 = el número de línea de la segunda unidad ejecutable del segundo método: 89
Nota: No todas las unidades ejecutables tendrán información de origen asociada a las mismas. Algunas son creadas por el compilador para implementar la semántica del lenguaje Java; por ejemplo, manejo de excepciones, inicialización o sincronización. Estas unidades ejecutables generadas tendrán un número de línea completo de cero en la cadena de caracteres methodLineTables. Un número de línea completo de cero indica que la información del número de línea no está disponible. Cuando un método entero no tiene información de origen aparecerá como si tuviese una única unidad ejecutable correspondiente al número de línea cero.
A continuación se ofrecen algunos ejemplos más de cadenas de caracteres methodLineTables y de sus significados:
Cadena de caracteres methodLineTables |
Significado |
+5 |
Si el número de línea de la primera unidad ejecutable del primer método es menor que diez, la cadena de caracteres completa empieza con un signo más para iniciar una serie de incrementos desde la línea cero. En este ejemplo, la primera unidad ejecutable del primer método empieza en la línea 5. |
+0 |
Si el primer método no tiene información de origen, la cadena de caracteres empezará con +0. Cualquier fragmento de sonda executableUnit que se aplique a un método de este tipo sólo se insertará una vez, al principio del método. |
...#437,#457+123... |
Si la primera unidad ejecutable de un método empieza más de nueve líneas después de la última unidad ejecutable del método anterior, el patrón es una coma, un signo de número y la cadena de caracteres de número de línea correspondiente a la primera unidad ejecutable del nuevo método. En este ejemplo parcial, la primera unidad ejecutable del nuevo método empieza 20 líneas después de la última unidad ejecutable del método anterior. |
...#437,+2... |
Es posible que la última unidad ejecutable de un método requiera la notación "#" y que la primera unidad ejecutable del método siguiente esté sólo a una pequeña distancia. En este ejemplo parcial, la última unidad ejecutable de un método empieza en la línea 437 y la primera unidad ejecutable del siguiente método empieza en la línea 439. |