Formatet for datastrengen methodLineTables

En tabel kodes af datastrengen methodLineTables med kun én indgang for hver eksekvérbar enhed i en klasse.

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:
    1. 51 + 1 = linjenummeret på den anden eksekvérbare enhed: 52
    2. 52 + 2 = linjenummeret på den tredje eksekvérbare enhed: 54
    3. 54 + 0 = linjenummeret på den fjerde eksekvérbare enhed: 54 (to eksekvérbare enheder på én kildelinje)
    4. 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):
    1. 75 = linjenummeret på den sjette eksekvérbare enhed
    2. 75 + 1 = linjenummeret på den syvende eksekvérbare enhed: 76
    3. 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):
    1. 77 + 4 = linjenummeret på den anden metodes første eksekvérbare enhed: 81
    2. 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.
Relateret reference
Probefragmenter