특정한 종류의 실행 모드의 경우 코드의 현재 확장점과 대응하는 소스 코드를 얻는 것이 중요할 수 있습니다. 이것은 일반적으로 프로그램을 디버그 또는 프로파일링할 때 중요합니다. 플러그인이 소스 코드 찾기를 지원할 수 있는 클래스를 등록할 수 있는 여러 가지 확장점이 디버그 플러그인에 의해 제공됩니다.
ISourceLocator 및 IPersistableSourceLocator는 실행 프로그램에서 다시 소스 코드로 맵핑하기 위한 인터페이스를 정의합니다.
소스 위치 지정자는 일반적으로 해당 실행 구성 및 실행 구성 위임과 함께 작동하도록 구현됩니다. 소스 위치 지정자 ID는 실행 구성 유형이 정의될 때 지정될 수 있거나, ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID 속성을 사용하여 실행 구성과 프로그램 방식으로 연관될 수 있습니다. 어느 경우에나 일정 시점에서 구성을 위한 소스 위치 지정자의 ID가 실제로 IPersistableSourceLocator를 구현하는 클래스로 해석되어야 합니다. 소스 위치 지정자 ID와 그의 클래스 사이의 연관은 org.eclipse.debug.core.sourceLocators 확장점을 사용하여 설정됩니다.
다음 마크업의 출처는 Java 도구입니다.
<extension point = "org.eclipse.debug.core.sourceLocators"> <sourceLocator id = "org.eclipse.jdt.debug.ui.javaSourceLocator" class="org.eclipse.jdt.debug.ui.JavaUISourceLocator" name="%javaSourceLocator"/> </extension>
실행 구성이 계속 유지될 수 있으므로 소스 위치 지정자 ID는 실행 구성과 함께 저장될 수 있습니다. 소스 위치 지정자를 인스턴스화할 시간일 때 디버그 플러그인은 소스 위치 지정자 ID 속성을 찾고 해당 ID와 연관된 클래스를 인스턴스화합니다.
소스 찾아보기를 위한 구현은 반드시 실행될 프로그램의 유형에 의존합니다. 그러나 플랫폼은 디렉토리, zip 파일, jar 파일 및 유사 파일을 포함하는 주어진 경로에서 소스 파일을 찾는 소스 위치 지정자에 대한 추상 구현을 정의합니다. 이 구현을 활용하기 위해 플러그인이 AbstractSourceLookupDirector를 확장할 수 있습니다. 특정 구현에서 필요한 모든 것은 스택 프레임을 파일 이름에 맵핑하는 적합한 ISourceLookupParticipant를 제공하는 기능입니다. 예제에 대해서는 AbstractSourceLookupDirector의 확장자를 참조하십시오.
AbstractSourceLookupDirector는 특정 소스 코드 찾아보기 경로에 따라 소스 파일을 검색합니다. 이 경로는 ISourceContainer의 배열로서 표현됩니다. 소스에 대해 검색해야 하는 소스 컨테이너는 일반적으로 실행되는 특정 소스 구성에 따라 계산됩니다. ISourcePathComputer는 실행 구성에 대한 적당한 소스 경로를 계산하는 오브젝트용 인터페이스를 정의합니다. 소스 경로 컴퓨터는 소스 위치 지정자와 아주 유사하게 ID에 의해 지정되며, 실행 구성 유형에 대한 확장 정의에 지정되거나 실행 구성에 대해 ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID 속성을 설정하여 프로그램 방식으로 연관될 수 있습니다. 소스 경로 컴퓨터에 대한 ID는 org.eclipse.debug.core.sourcePathComputers 확장점에서 클래스 구현과 연관됩니다. 다음 마크업은 Java 소스 경로 컴퓨터에 대한 JDT가 사용하는 정의를 보여줍니다.
<extension point="org.eclipse.debug.core.sourcePathComputers"> <sourcePathComputer id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer" class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer"> </sourcePathComputer> ...
소스 경로 컴퓨터는 소스 찾아보기 경로를 표시하는 ISourceContainer의 배열을 계산할 책임이 있습니다. 예를 들어 Java 소스 경로 컴퓨터는 경로를 빌드할 때 클래스 경로를 고려합니다.
소스 찾아보기 경로의 부분으로 지정되는 컨테이너는 ISourceContainer를 구현해야 하는데, 이는 이름 지정된 소스 요소에 대해 표시되는 컨테이너를 검색할 수 있습니다. 소스 코드가 저장되는 여러 가지 종류의 장소를 표시하기 위해 여러 가지 종류의 소스 컨테이너가 필요할 수 있습니다. 예를 들어 JDT는 Java 프로젝트의 소스, 클래스 경로의 소스 및 패키지 단편의 소스를 표시하는 소스 컨테이너를 정의합니다. 실행 구성에 사용되는 소스 컨테이너는 실행 구성에 ID로 저장될 수 있습니다. 실행 구성이 지속될 수 있으므로 소스 컨테이너의 ID를 구현 클래스와 연관시키는 방법이 있어야 합니다. 이것은 org.eclipse.debug.core.sourceContainerTypes 확장점을 사용하여 수행됩니다. 다음 예는 JDT에서 온 것입니다.
<extension point="org.eclipse.debug.core.sourceContainerTypes"> <sourceContainerType id="org.eclipse.jdt.launching.sourceContainer.javaProject" name="%javaProjectSourceContainerType.name" description="%javaProjectSourceContainerType.description" class="org.eclipse.jdt.internal.launching.JavaProjectSourceContainerTypeDelegate"> </sourceContainerType> ...