methodLineTables 문자열 형식

methodLineTables 데이터 문자열은 클래스에 있는 모든 실행 가능 단위에 대해 하나의 항목으로 테이블을 인코드합니다.

methodLineTables 테이블에 있는 각 항목의 값은 classSourceFile 데이터 문자열에 의해 참조되는 소스 파일의 행 번호인 실행 가능 단위의 소스 행 번호에 해당합니다.

다음은 methodLineTables 문자열의 예제입니다.
#51+1201#75+11,41
다음은 문자열을 해석하는 방법입니다.
  • 숫자 기호("#") 바로 다음에 오는 숫자는 클래스의 소스 코드에 있는 절대 행 번호를 나타냅니다. 예제에서, 클래스의 첫 번째 메소드에 있는 첫 번째 실행 가능 단위는 51행에 있습니다.
  • 더하기 기호("+") 다음에 오는 각 단일 숫자는 다음 실행 가능 단위에 대한 행 번호를 생성하기 위해 이전 행 번호에 추가하는 행 수를 나타냅니다. 이 예제에서 더하기 기호 다음에 오는 숫자(+1201)는 두 번째부터 다섯 번째 실행 가능 단위까지의 행 번호를 계산하는 데 사용됩니다.
    1. 51 + 1 = 두 번째 실행 가능 단위 행 번호: 52
    2. 52 + 2 = 세 번째 실행 가능 단위 행 번호: 54
    3. 54 + 0 = 네 번째 실행 가능 단위 행 번호: 54(하나의 소스 행에 있는 두 개의 실행 가능 단위)
    4. 54 + 1 = 다섯 번째 실행 가능 단위 행 번호: 55
  • 행 번호 증분이 음수이거나 10 이상일 때, 실행 가능 단위에 대한 절대 행 번호가 지정됩니다. 이 예제에서, 6번째 실행 가능 단위는 55인 이전 행 번호보다 20 더 큰 75행에 있습니다. 이러한 경우, 6번째 실행 가능 단위에 대해 절대 행 번호가 지정되고 상대 행 번호 계산이 다시 시작됩니다(#75+11).:
    1. 75 = 6번째 실행 가능 단위 행 번호
    2. 75 + 1 = 7번째 실행 가능 단위 행 번호: 76
    3. 76 + 1 = 8번째 실행 가능 단위 행 번호: 77
  • 쉼표(",")는 한 메소드의 종료와 다음 메소드의 시작을 나타냅니다. 쉼표 다음에 오는 숫자와 기호는 이전대로 해석됩니다. 이 예제에서 두 번째 메소드의 첫 번째 실행 가능 단위의 행 번호는 이전 메소드에 대해 계산된 마지막 행 번호보다 단지 4가 더 크므로, 쉼표(,41) 다음에 상대 행 번호 계산이 계속 수행됩니다.
    1. 77 + 4 = 두 번째 메소드의 첫 번째 실행 가능 단위 행 번호: 81
    2. 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행에서 시작합니다.

상위 주제: Probekit 참조

관련 참조
단편 프로브 오브젝트
데이터 프로브 오브젝트

Copyright IBM Corporation and others 2000, 2004.