Verdien for hver oppføring i methodLineTables-tabellen er linjenummeret (i kildefilen
navngitt av classSourceFile-datastrengen) for den tilsvarende utførbare enheten. For eksempel vil oppføring nummer
fem i tabellen gi linjenummeret for utførbar enhet nummer fem.
Her er et eksempel på en methodLineTables-streng:
#51+1201#75+11,41
Slik tolker du strengen:
- Sifrene som følger umiddelbart etter nummertegnet
("#"), representerer et fullstendig linjenummer i kildekoden til klassen. I eksempelet står den første utførbare
enheten i den første metoden i klassen, på linje 51.
- Hvert enkelt siffer etter et plusstegn ("+") representerer antall linjer som skal
legges til det forrige linjenummeret for å lage linjenummeret til den neste utførbare enheten. I eksempelet blir
sifrene etter plusstegnet (+1201) brukt til å beregnet linjenumrene for den andre til og med den
femte utførbare enheten:
- 51 + 1 = den andre utførbare enhetens linjenummer: 52
- 52 + 2 = den tredje utførbare enhetens linjenummer: 54
- 54 + 0 = den fjerde utførbare enhetens linjenummer: 54 (to utførbare enheter på en kildelinje)
- 54 + 1 = den femte utførbare enhetens linjenummer: 55
- Når linjenummerøkningen er negativ eller større enn ni, blir det fullstendige
linjenummeret for den utførbare enheten oppgitt. I eksempelet er den sjette utførbare enheten på linje 75, tjue
større enn det forrige linjenummeret, som var 55. Det fullstendige linjenummeret blir da oppgitt for den sjette
utførbare enheten, og beregningen av det relative linjenummeret begynner på nytt (#75+11):
- 75 =
den sjette utførbare enhetens linjenummer
- 75 + 1 = den sjuende utførbare enhetens linjenummer: 76
- 76 + 1 = den åttende utførbare enhetens linjenummer: 77
- Et komma (",") betegner slutten på en metode og begynnelsen på den neste.
Sifrene og symbolene som står etter kommaet, blir tolket som før. I eksempelet er linjenummeret til den andre
metodens første utførbare enhet bare 4 større enn det siste linjenummeret beregnet for den forrige metoden,
så beregningen av det relative linjenummeret fortsetter etter kommaet (,41):
- 77 + 4 =
linjenummeret til den andre metodens første utførbare enhet: 81
- 81 + 1 = linjenummeret til den andre metodens andre utførbare enhet: 82
Merk: Ikke alle utførbare enheter har tilknyttet
kildeinformasjon. Noen blir opprettet av kompilatoren for å implementere semantikken i Java-språket: for eksempel
unntaksbehandling, initialisering eller synkronisering. Disse genererte utførbare enhetene har null som fullstendig
linjenummer i methodLineTables-strengen. Når det fullstendige linjenummeret er null, betyr det at det ikke er noe
tilgjengelig linjenummerinformasjon. Når en fullstendig metode ikke har noe kildeinformasjon, ser den ut til å ha
en enkelt utførbar enhet som tilsvarer linjenummer null.
Her er noen flere eksempler på methodLineTables-strenger og hva de betyr:
methodLineTables-streng |
Betydning |
+5 |
Hvis linjenummeret til den første utførbare enheten i den første
metoden er mindre enn ti, begynner hele strengen med et plusstegn for å begynne en serie med økninger fra
linje null. I dette eksempelet begynner den første metodens første utførbare enhet på linje 5. |
+0 |
Hvis den første metoden ikke har noe kildeinformasjon, begynner
strengen med +0. Alle executableUnit-probefragmenter som gjelder slike metoder, blir satt inn bare en
gang, på begynnelsen av metoden. |
...#437,#457+123... |
Hvis den siste utførbare enheten for en metode begynner mer enn ni
linjer etter den siste utførbare enheten i den forrige metoden, er mønsteret et komma, nummertegn (#) og
linjenummerstrengen for den første utførbare enheten i den nye metoden. I dette deleksempelet
begynner den første utførbare enheten i den nye metoden 20 linjer etter den forrige metodens siste utførbare enhet. |
...#437,+2... |
Det er mulig for den siste utførbare enheten i en metode å få
notasjonen "#", og at det er kort avstand til den første utførbare enheten i den neste metoden. I dette
deleksempelet, begynner den siste utførbare enheten i en metode på linje 437, og den første utførbare enheten i
den neste metoden på linje 439. |