methodLineTables 테이블 각 항목의 값은
classSourceFile 데이터 문자열에서 참조하는 소스 파일의 라인 번호에 해당하며 실행 가능 단위의 소스 라인 번호입니다.
다음은 methodLineTables 문자열의 예입니다.
#51+1201#75+11,41
다음은 문자열을 해석하는 방법입니다.
- 번호 부호("#") 바로 다음의 숫자는 클래스용 소스 코드의 완료 라인 번호를 나타냅니다. 예를 들어,
클래스의 첫 번째 메소드에서 첫 번째 실행 가능 단위는 51번 라인에 있습니다.
- 더하기 부호("+") 다음에 오는 각각의 숫자는 다음 실행 가능 단위 라인 번호를 생성하도록
이전 라인 번호에 추가할 라인 수를 나타냅니다.
예에서 더하기 부호 다음의 숫자(+1201)는 다음과 같이 다섯 번째 실행 가능 단위에서
두 번째 라인 번호를 계산하는 데 사용됩니다.
- 51 + 1 = 두 번째 실행 가능 단위 라인 번호: 52
- 52 + 2 = 세 번째 실행 가능 단위 라인 번호: 54
- 54 + 0 = 네 번째 실행 가능 단위 라인 번호: 54(하나의 소스 라인에 두 개의 실행 가능 단위)
- 54 + 1 = 다섯 번째 실행 가능 단위 라인 번호: 55
- 라인 번호 증분이 -이거나 9보다 큰 경우 실행 가능 단위에 완료 라인 번호가 지정됩니다.
예에서 여섯 번째 실행 가능 단위는 75번 라인에 있으며 이전 라인 번호 55보다 20이 더 큽니다.
이 경우 여섯 번째 실행 가능 단위에 완료 라인 번호가 지정되며 관련 라인 번호 계산이
다음과 같이 다시 시작됩니다(#75+11).
- 75 = 여섯 번째 실행 가능 단위 라인 번호
- 75 + 1 = 일곱 번째 실행 가능 단위 라인 번호: 76
- 76 + 1 = 여덟 번째 실행 가능 단위 라인 번호: 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번 라인에서 시작합니다. |