Wartością każdej z pozycji w tabeli methodLineTables jest numer wiersza (w pliku źródłowym wskazanym przez łańcuch danych classSourceFile) dla odpowiedniej jednostki wykonywalnej. Na przykład pozycji numer pięć w tabeli zawiera numer wiersza dla jednostki wykonywalnej o numerze piątym.
Oto przykładowy łańcuch methodLineTables:
#51+1201#75+11,41
Poniżej przedstawiono sposób interpretacji tego łańcucha:
- Cyfry występujące bezpośrednio po znaku numeru (#) reprezentują kompletny numer wiersza w kodzie źródłowym klasy. W podanym przykładzie pierwsza jednostka wykonywalna w pierwszej metodzie klasy znajduje się w wierszu 51.
- Każda cyfra po znaku plus (+) reprezentuje liczbę wierszy, które należy dodać do poprzedniego numeru wiersza, aby uzyskać numer wiersza następnej jednostki wykonywalnej. W podanym przykładzie cyfry występujące po znaku plus (+1201) służą do obliczania numerów wierszy dla jednostek wykonywalnych o numerach od 2 do 5:
- 51 + 1 = numer wiersza drugiej jednostki wykonywalnej (czyli 52)
- 52 + 2 = numer wiersza trzeciej jednostki wykonywalnej (czyli 54)
- 54 + 0 = numer wiersza czwartej jednostki wykonywalnej (czyli 54 - dwie jednostki wykonywalne w jednym wierszu źródłowym)
- 54 + 1 = numer wiersza piątej jednostki wykonywalnej (czyli 55)
- Jeśli odstęp między numerami wierszy jest wartością ujemną lub większą niż dziewięć, określany jest kompletny numer wiersza jednostki wykonywalnej. W podanym przykładzie szósta jednostka wykonywalna znajduje się w wierszu 75, którego numer jest o dwadzieścia większy od numeru poprzedniego wiersza (55). W tym przypadku dla szóstej jednostki wykonywalnej jest określany kompletny numer wiersza, a obliczanie względnego numeru wiersza rozpoczyna się od początku (#75+11):
- 75 = numer wiersza szóstej jednostki wykonywalnej
- 75 + 1 = numer wiersza siódmej jednostki wykonywalnej (czyli 76)
- 76 + 1 = numer wiersza ósmej jednostki wykonywalnej (czyli 77)
- Przecinek (,) oznacza koniec jednej metody i początek następnej. Cyfry i symbole występujące po przecinku są interpretowane tak jak poprzednio. W podanym przykładzie numer wiersza pierwszej jednostki wykonywalnej drugiej metody jest tylko o 4 większy od ostatniego numeru wiersza obliczonego dla poprzedniej metody, dlatego po przecinku kontynuowane jest obliczanie względnego numeru wiersza (,41):
- 77 + 4 = numer wiersza pierwszej jednostki wykonywalnej drugiej metody (czyli 81)
- 81 + 1 = numer wiersza w drugiej jednostce wykonywalnej drugiej metody: 82
Uwaga: Nie ze wszystkimi jednostkami wykonywalnymi powiązane są informacje o kodzie źródłowym. Niektóre z nich są tworzone przez kompilator w celu zaimplementowania semantyki języka Java (np. obsługi wyjątków, inicjowania lub synchronizacji). Te wygenerowane jednostki wykonywalne mają w łańcuchu methodLineTables kompletny numer wiersza o wartości zero. Kompletny numer wiersza o wartości zero oznacza, że informacje o numerze wiersza są niedostępne. Jeśli dla całej metody nie ma informacji o kodzie źródłowym, będzie istniała tylko jedna jednostka wykonywalna odpowiadająca wierszowi o numerze zero.
Oto kilka dodatkowych przykładów łańcuchów methodLineTables i ich znaczeń:
Łańcuch methodLineTables |
Znaczenie |
+5 |
Jeśli numer wiersza pierwszej jednostki wykonywalnej pierwszej metody jest mniejszy niż dziesięć, cały łańcuch zaczyna się od znaku plus w celu rozpoczęcia procesu zwiększania wartości od wiersza o numerze zero. W tym przykładzie pierwsza jednostka wykonywalna pierwszej metody rozpoczyna się od wiersza 5. |
+0 |
Jeśli pierwsza metoda nie zawiera informacji źródłowych, łańcuch rozpoczyna się od +0. Dowolny fragment sondy executableUnit stosowany względem takiej metody zostanie wstawiony tylko raz (na początku metody). |
...#437,#457+123... |
Jeśli pierwsza jednostka wykonywalna metody rozpoczyna się po ponad dziewięciu wierszach od ostatniej jednostki wykonywalnej poprzedniej metody, wzorzec składa się z przecinka, znaku plus i łańcucha numeru wiersza dotyczącego pierwszej jednostki wykonywalnej w nowej metodzie. W tym częściowym przykładzie pierwsza jednostka wykonywalna w nowej metodzie rozpoczyna się 20 wierszy po ostatniej jednostce wykonywalnej poprzedniej metody. |
...#437,+2... |
Ostatnia jednostka wykonywalna w metodzie może wymagać zastosowania notacji #, a pierwsza jednostka wykonywalna w następnej metodzie może znajdować się w niewielkiej odległości. W tym częściowym przykładzie ostatnia jednostka wykonywalna jednej metody rozpoczyna się w wierszu 437, a pierwsza jednostka wykonywalna następnej metody rozpoczyna się w wierszu 439. |