Pro určité typy režimů spuštění může být zapotřebí získat zdrojový kód, který odpovídá aktuálně prováděnému kódu. To je zapotřebí typicky při ladění a profilování souboru. Modul plug-in ladění poskytuje určitý počet různých bodů rozšíření, které modulům plug-in umožňují registrovat třídy, které mohou poskytnout pomoc při lokalizaci zdrojového kódu.
ISourceLocator a IPersistableSourceLocator definují rozhraní k mapování prováděného programu zpět na zdrojový kód.
Lokátory zdroje jsou obvykle implementovány pro práci s odpovídající konfigurací spuštění a jejím delegátem. ID lokátoru zdroje může být zadáno při definici typu konfigurace spuštění nebo může být přiřazeno ke konfiguraci spuštění programem s použitím atributu ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID. V obou případech musí být v určitém momentu rozřešeno ID lokátoru zdroje konfigurace pro třídu, která implementuje IPersistableSourceLocator. Přiřazení ID lokátoru zdroje a jeho třídy zajišťuje bod rozšíření org.eclipse.debug.core.sourceLocators.
Následující markup je z nástrojů 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>
Jelikož konfigurace spuštění mohou být trvalé, lze ID lokátorů zdroje ukládat v konfiguraci spuštění. Pokud nastal moment, kdy je zapotřebí vytvořit instanci lokátoru zdroje, modul plug-in ladění vyhledá atribut ID lokátoru zdroje a vytvoří třídu asociovanou s tímto ID.
Implementace vyhledání zdroje nutně závisí na typu spouštěného programu. Platforma nicméně definuje abstraktní implementaci lokátoru zdroje, který vyhledává zdrojové soubory v dané cestě, která obsahuje adresáře, soubory zip, soubory jar a podobně. Chcete-li využít přednosti této implementace, může váš modul plug-in rozšiřovat AbstractSourceLookupDirector. Vše, co je zapotřebí od specifické implementace, ze schopnosti poskytnout vhodný ISourceLookupParticipant, který je schopen mapovat blok zásobníku na název souboru. Viz rozšíření AbstractSourceLookupDirector, kde jsou uvedeny příklady.
AbstractSourceLookupDirector hledá zdrojové soubory podle určité vyhledávací cesty zdrojového kódu. Tato cesta je vyjádřena jako pole prvků ISourceContainer. Kontejnery zdrojů, ve kterých mají být vyhledávány zdroje, se v typickém případě vypočítávají podle konkrétních vlastností konfigurace zdroje, která se spouští. ISourcePathComputer definuje rozhraní objektu, který vypočítává vhodnou cestu ke zdroji pro konfiguraci spuštění. Počítač na cestě ke zdroji se, podobně jako lokátor prostředku, zadává s použitím ID, a lze jej zadat v definici rozšíření typu konfigurace spuštění nebo v programu nastavením atributu ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID pro konfiguraci spuštění. ID počítače na cestě ke zdroji je přiřazeno jeho implementující třídě v bodu rozšíření org.eclipse.debug.core.sourcePathComputers. Následující markup předvádí definici použitou systémem JDT pro svůj počítač na cestě ke zdroji Java:
<extension point="org.eclipse.debug.core.sourcePathComputers"> <sourcePathComputer id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer" class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer"> </sourcePathComputer> ...
Počítač na cestě ke zdroji zajišťuje výpočet pole prvků ISourceContainer, které představuje cestu vyhledávání zdrojů. Například počítač na cestě ke zdroji Java při vytváření cesty zohledňuje cestu ke třídě.
Kontejnery zadané jako část cesty vyhledávání zdroje musejí implementovat ISourceContainer, který je schopen hledat kontejner zadaný pro pojmenovaný prvek zdroje. K reprezentaci různých typů míst uložení zdrojového kódu mohou být zapotřebí různé typy kontejnerů zdrojů. Například JDT definuje kontejnery zdrojů, které představují zdroj v projektu Java, zdroj na cestě ke třídě a zdroj ve fragmentu balíčku. Kontejnery zdrojů použité pro konfiguraci spuštění mohou být uloženy s použitím ID v konfiguraci spuštění. Protože konfigurace spuštění může být trvalá, musí být k dispozici způsob přiřazení ID kontejneru zdrojů ke třídě, která jej implementuje. Toto se provádí s použitím bodu rozšíření org.eclipse.debug.core.sourceContainerTypes. Následující příklad pochází z 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> ...