Probekit은 프로브를 작성 및 사용할 때 사용할 수 있는 Eclipse 플랫폼의 프레임워크입니다. 프로브는
프로그램을 실행할 때 프로그램에 대한 정보를 제공하기 위해 프로그램에 삽입할 수 있는 Java™ 코드 단편입니다.
프로브를 이해하려면 여기에서 설명하는 샘플 프로브로 시작하십시오. 이것은
프로그램을 실행할 때 호출되는 모든 메소드를 식별하는 메시지를 인쇄하는
기본 프로브입니다.
프로브는 사용자가 Probekit 편집기에서 작성하는 항목에 의해 정의됩니다. 이
샘플에는 하나의 단편이 들어 있습니다.
단편은 프로브가 수행하는 일을
판별합니다. 단편 정의는 다음을 포함합니다.
- 단편 유형의 스펙. 이 단편은 입력
단편으로, 메소드 입력 시간에 실행함을 의미합니다.
- 단편이 액세스할 수 있는 데이터 항목. 여기에서 데이터 항목은
단편이 클래스 및 메소드 이름에 액세스할 수 있도록 합니다.
- 프로브의 로직을 정의하는 Java 코드 스니펫. 이 단편은
System.out.println을 호출하여 실행되는 메소드의 클래스 및
메소드 이름을 표시합니다.
이는 프로브가 Probekit 편집기에서 보이는 모습입니다.

Probekit 편집기를 사용하여 프로브를 작성한 후 이를 프로젝트에 대한
클래스 및 jar 파일에 적용할 수 있습니다. 그러면 프로젝트를 실행할 때
단편 코드가 프로그램과 함께 실행됩니다.
다음은 Probekit이 도움이 되는 방법에 대한 정보를 포함하여 프로브를
작성 및 사용하는 방법의 개요입니다.
- Probekit 편집기를 사용하여 Probekit 소스 파일에 프로브를 작성합니다.
Probekit 소스 파일의 확장자는 .probe여야 합니다. 이들 파일은 하나 이상의
프로브를 포함할 수 있으며, 각 프로브는 하나 이상의 프로브 단편을 포함할 수 있습니다.
- Probekit은 프로브 단편을 Java 메소드 세트로 어셈블한 후
컴파일합니다. Probekit은 프로브를 컴파일할 때 프로브 단편을
표준 Java boilerplate와 결합하고 새 프로브 클래스에 대한 Java 소스 코드를
생성합니다. 프로브 단편에서 생성되는 기능은 새 프로브
클래스의 정적 메소드로서 나타납니다.
- 프로브를 적용할 때 조사하고자 하는 대상 클래스 및 jar 파일을
지정합니다. Probekit BCI(byte-code Instrumentation) 엔진은
사용 가능한 프로브 및 해당 대상 패턴의 목록을 참조하고 프로브
단편 메소드에 대한 호출을 대상 프로그램에 삽입합니다. 호출 명령문을
대상 메소드에 삽입하는 프로세스를 인스트루먼테이션이라고 합니다.
인스트루먼트화된 메소드를 포함하는 클래스를 프로브된 클래스라고 부릅니다.
프로브 단편에 의해 요청되는 데이터 항목(예: 메소드 이름과
클래스 이름)이 인수로서 전달됩니다.
- 응용프로그램을 인스트루먼트화한 후 프로그램이
실행될 때 프로브 단편이 실행됩니다.
프로브 단편
유형이 단편이 실행되는 시기를 판별합니다. 다음
경우에 단편이 실행되게 하는 유형을 지정할 수 있습니다.
- 메소드 입력 시간에.
- 메소드 종료 시간에(정상 리턴 또는 예외의 결과로서).
- 예외 핸들러 시간에. 즉, catch 절의 맨 위, 또는
예외의 결과로 호출되는 finally 절의 맨 위에.
- 클래스 정적 초기화 프로그램의 원래 코드 앞에서.
- 모든 실행 가능 코드 단위 앞에서(소스 코드 정보가 사용
가능할 때).
- 특정 메소드가 호출될 때. (이 경우 인스트루먼테이션은 호출된 메소드 내부가
아니라 호출 사이트에서 수행됩니다.)
프로브 단편은 삽입된 위치에서 응용프로그램에 대한 다양한 유형의 정보를 제공하는
데이터 항목에 액세스할 수 있습니다. 예를 들어 다음과 같습니다.
- 패키지, 클래스 및 메소드 이름
- 메소드 서명
- this 오브젝트
- 인수
- 리턴값
프로브를 특정 클래스 및 메소드에만 적용하려는 경우, 대상을 지정하거나 필터를
설정하십시오. 자세한 정보는 프로브 대상 및 필터를 참조하십시오.