methodLineTables 테이블에 있는 각 항목의 값은 classSourceFile 데이터 문자열에
의해 참조되는 소스 파일의 행 번호인 실행 가능 단위의 소스 행 번호에 해당합니다.
다음은 methodLineTables 문자열의 예제입니다.
#51+1201#75+11,41
다음은 문자열을 해석하는 방법입니다.
- 숫자 기호("#") 바로 다음에 오는 숫자는 클래스의 소스 코드에 있는 절대 행 번호를
나타냅니다. 예제에서, 클래스의 첫 번째 메소드에 있는 첫 번째 실행 가능 단위는 51행에 있습니다.
- 더하기 기호("+") 다음에 오는 각 단일 숫자는
다음 실행 가능 단위에 대한 행 번호를 생성하기 위해 이전 행 번호에 추가하는 행 수를 나타냅니다.
이 예제에서 더하기 기호 다음에 오는 숫자(+1201)는 두 번째부터 다섯 번째 실행 가능 단위까지의
행 번호를 계산하는 데 사용됩니다.
- 51 + 1 = 두 번째 실행 가능 단위 행 번호: 52
- 52 + 2 = 세 번째 실행 가능 단위 행 번호: 54
- 54 + 0 = 네 번째 실행 가능 단위 행 번호: 54(하나의 소스 행에 있는 두 개의 실행 가능 단위)
- 54 + 1 = 다섯 번째 실행 가능 단위 행 번호: 55
- 행 번호 증분이 음수이거나 10 이상일 때, 실행 가능 단위에 대한 절대 행 번호가
지정됩니다. 이 예제에서, 6번째 실행 가능 단위는 55인 이전 행 번호보다 20 더 큰 75행에 있습니다.
이러한 경우, 6번째 실행 가능 단위에 대해 절대 행 번호가 지정되고 상대 행 번호 계산이 다시
시작됩니다(#75+11).:
- 75 = 6번째 실행 가능 단위 행 번호
- 75 + 1 = 7번째 실행 가능 단위 행 번호: 76
- 76 + 1 = 8번째 실행 가능 단위 행 번호: 77
- 쉼표(",")는 한 메소드의 종료와 다음 메소드의 시작을 나타냅니다.
쉼표 다음에 오는 숫자와 기호는 이전대로 해석됩니다. 이 예제에서 두 번째 메소드의 첫 번째 실행 가능 단위의
행 번호는 이전 메소드에 대해 계산된 마지막 행 번호보다 단지 4가 더 크므로, 쉼표(,41)
다음에 상대 행 번호 계산이 계속 수행됩니다.
- 77 + 4 = 두 번째 메소드의 첫 번째 실행 가능 단위 행 번호: 81
- 88 + 1 = 두 번째 메소드의 두 번째 실행 가능 단위 행 번호: 89
참고:모든 실행 가능 단위가 그와 연관된 소스 정보를
가지고 있는 것은 아닙니다. 일부는 컴파일러에 의해 Java 언어의 의미(예를 들어, 예외 처리,
초기화 또는 동기화)를 구현하도록 작성됩니다. 이렇게 생성된 실행 가능 단위는 methodLineTables 문자열에서
완전 행 번호 0을 가집니다. 절대 행 번호 0은 행 번호 정보가 사용 가능하지 않음을 나타냅니다.
전체 메소드에 소스 정보가 없을 때, 이는 행 번호 0에 해당하는 단일 실행 가능 단위를 갖는 것으로 나타납니다.
다음은 methodLineTables 문자열의 몇 가지 추가 예제와 그 의미를 보여줍니다.
| methodLineTables 문자열 |
의미 |
| +5 |
첫 번째 메소드의 첫 번째 실행 가능 단위의 행 번호가 10 미만인 경우,
전체 문자열은 플러스 기호로 시작하여 0행부터 증분 시리즈를 시작합니다. 이 예제에서 첫 번째
메소드의 첫 번째 실행 가능 단위는 5행에서 시작합니다. |
| +0 |
첫 번째 메소드에 소스 정보가 없는 경우 문자열은 +0으로
시작합니다. 이러한 메소드에 적용되는 모든 executableUnit 프로브 단편은 메소드 시작 부분에서 한 번만
삽입됩니다. |
| ...#437,#457+123... |
메소드에 대한 첫 번째 실행 가능 단위가 이전 메소드에 대한
마지막 실행 가능 단위에서 10행 이상 뒤에 시작하는 경우, 이 패턴은 새 메소드의 첫 번째 실행 가능
단위에 대한 쉼표, 번호 기호, 행 번호 문자열입니다. 이 부분 예제에서 새 메소드의 첫 번째
실행 가능 단위는 이전 메소드의 마지막 실행 가능 단위에서 20행 뒤에 시작합니다. |
| ...#437,+2... |
메소드의 마지막 실행 가능 단위에 "#" 표시가 필요하고
그 다음 메소드의 첫 번째 실행 가능 단위가 약간 떨어져 있게 될 가능성이 있습니다. 이 부분 예제에서,
한 메소드의 마지막 실행 가능 단위는 437행에서 시작하고 그 다음 메소드의 첫 번째 실행 가능 단위는
439행에서 시작합니다. |