Værdien for hver indgang i tabellen methodLineTables er
linjenummeret (i kildefilen navngivet af datastrengen classSourceFile) for den
tilsvarende eksekvérbare enhed. For eksempel vil indgang nr. fem i tabellen give
linjenummeret for den eksekvérbare enhed nr. fem.
Her er et eksempel på en methodLineTables-streng:
#51+1201#75+11,41
Sådan kan du fortolke strengen:
- De cifre, der
følger efter et nummertegn (#) repræsenterer et fuldstændigt linjenummer i kildekoden for
en klasse. I eksemplet er den første eksekvérbare enhed i den første metode i
klassen på linje 51.
- Hver enkelt ciffer, der følger efter et plustegn (+), repræsenterer
det antal linjer, som skal føjes til det forrige linjenummer for at generere
linjenummeret på den næste eksekvérbare enhed. I eksemplet bruges de cifre, der følger
efter plustegnet (+1201) til at beregne linjenumrene for den anden til den femte
eksekvérbare enhed:
- 51 + 1 = linjenummeret på den anden eksekvérbare enhed:
52
- 52 + 2 = linjenummeret på den tredje eksekvérbare enhed: 54
- 54 + 0 = linjenummeret på den fjerde eksekvérbare enhed: 54 (to eksekvérbare enheder
på én kildelinje)
- 54 + 1 = linjenummeret på den femte eksekvérbare enhed: 55
- Når forøgelsen af et linjenummer er negativ eller større end 9,
angives det fuldstændige linjenummer for den eksekvérbare enhed. I eksemplet er den
sjette eksekvérbare enhed på linje 75, dvs. 20 større end det forrige linjenummer, som
var 55. I dette tilfælde er det fuldstændige linjenummer angivet for den sjette
eksekvérbare enhed, og beregningen af det relative linjenummer begynder igen
(#75+11):
- 75 = linjenummeret på den sjette eksekvérbare enhed
- 75 + 1 = linjenummeret på den syvende eksekvérbare enhed: 76
- 76 + 1 = linjenummeret på den ottende eksekvérbare enhed: 77
- Et komma (,) angiver slutningen af én metode og begyndelsen af den
næste. Cifrene og symbolerne efter kommaet fortolkes som før. I eksemplet er
linjenummeret på den anden metodes første eksekvérbare enhed kun 4 større end det
sidste linjenummer, der blev beregnet for den forrige metode, så beregningen af det
relative linjenummer fortsætter efter kommaet (,41):
- 77 + 4 =
linjenummeret på den anden metodes første eksekvérbare enhed: 81
- 81 + 1 = linjenummeret på den anden metodes anden eksekvérbare enhed: 82
Bemærk: Ikke alle eksekvérbare enheder
har kildeoplysninger tilknyttet. Nogle oprettes af compileren for at implementerer
Java-sprogets semantik, f.eks. behandling af undtagelser, initialisering eller
synkronisering. Disse genererede eksekvérbare enheder har et fuldstændigt linjenummer
på nul i strengen methodLineTables. Et fuldstændigt linjenummer på nul angiver, at der
ikke er nogen tilgængelige linjenummeroplysninger. Når en hel metode ikke har nogen
kildeoplysninger, ser den ud til at have en enkelt eksekvérbar enhed, der svarer til
linjenummer nul.
Her følger flere eksempler på methodLineTables-strenge og deres betydning:
Strengen
methodLineTables |
Betydning |
+5 |
Hvis linjenummeret på den første
eksekvérbare enhed er mindre end 10, starter hele strengen med et plustegn for at
indlede en forøgelsesrække fra linje nul. I dette eksempel starter den første metodes
første eksekvérbare enhed på linje fem. |
+0 |
Hvis den første metode ikke har nogen
kildeoplysninger, starter strengen med +0. Alle executableUnit-probefragmenter,
der anvendes på en sådan metode, indsættes kun én gang i begyndelsen af metoden. |
...#437,#457+123... |
Hvis den første eksekvérbare enhed for en
metode starter mere end 9 linjer efter den sidste eksekvérbare enhed for den forrige
metode, er syntaksen et komma, et nummertegn og linjenummerstrengen for den første
eksekvérbare enhed i den nye metode. I dette delvise eksempel starter den første
eksekvérbare enhed i den nye metode 20 linjer efter den forrige metodes sidste
eksekvérbare enhed. |
...#437,+2... |
Den sidste eksekvérbare enhed i en metode
har mulighed for at kræve notationen med nummertegn (#), og at der skal være lidt afstand
til den første eksekvérbare enhed i næste metode. I dette delvise eksempel
starter den sidste eksekvérbare enhed af én af metoderne på linje 437, og den første
enhed i næste metode starter på linje 439. |