methodLineTables-datastrengformatet

Datastrengen methodLineTables koder en tabell med en oppføring for hver utførbare enhet i en klasse.

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:
    1. 51 + 1 = den andre utførbare enhetens linjenummer: 52
    2. 52 + 2 = den tredje utførbare enhetens linjenummer: 54
    3. 54 + 0 = den fjerde utførbare enhetens linjenummer: 54 (to utførbare enheter på en kildelinje)
    4. 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):
    1. 75 = den sjette utførbare enhetens linjenummer
    2. 75 + 1 = den sjuende utførbare enhetens linjenummer: 76
    3. 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):
    1. 77 + 4 = linjenummeret til den andre metodens første utførbare enhet: 81
    2. 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.
Beslektet referanse
Probefragmenter