Für bestimmte Arten von Startmodi kann es wichtig sein, den Quellcode zu erhalten, der dem aktuellen Ausführungspunkt in dem Code entspricht. Dies ist üblicherweise wichtig beim Debug oder der Profilerstellung eines Programms. Das Debug-Plug-in stellt mehrere verschiedene Erweiterungspunkte zur Verfügung, die ermöglichen, dass Plug-ins Klassen registrieren, die bei der Suche nach dem Quellcode behilflich sind.
ISourceLocator und IPersistableSourceLocator definieren Schnittstellen für die Zuordnung eines ausführenden Programms zurück zum Quellcode.
Quellenlokatoren werden typischerweise implementiert, so dass sie mit einer entsprechenden Startkonfiguration und einem Startkonfigurationsstellvertreter funktionieren. Eine Quellenlokator-ID kann angegeben werden, wenn der Typ einer Startkonfiguration definiert wird, oder sie kann bei einer Startkonfiguration mit Hilfe des Attributs ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID durch das Programm zugeordnet werden. In beiden Fällen, muss irgendwo die ID des Quellenlokators für eine Konfiguration für die Klasse, die tatsächlich IPersistableSourceLocator implementiert, aufgelöst werden. Die Zuordnung zwischen einer Quellenlokator-ID und ihrer Klasse erfolgt mit Hilfe des Erweiterungspunkts org.eclipse.debug.core.sourceLocators.
Die folgenden Befehle stammen aus den Java-Tools:
<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>
Da Startkonfigurationen bestehen bleiben können, können Quellenlokator-IDs auch zusammen mit der Startkonfiguration gespeichert werden. Wenn es an der Zeit ist, einen Quellenlokator zu erstellen, sucht das Debug-Plug-in das Attribut der Quellenlokator-ID und erstellt die dieser ID zugeordnete Klasse.
Die Implementierung der Quellensuche hänt notwendigerweise vom Typ des gestarteten Programms ab. Jedoch definiert die Plattform eine abstrakte Implementierung für einen Quellenlokator, der nach Quelldateien in einem gegebenen Pfad sucht und der Verzeichnisse, ZIP-Dateien, JAR-Dateien usw. einbezieht. Um die Vorteile aus dieser Implementierung zu nutzen, kann Ihr Plug-in AbstractSourceLookupDirector erweitern. Alles was von der spezifischen Implementierung gefordert wird, ist die Fähigkeit, einen entsprechenden ISourceLookupParticipant zur Verfügung zu stellen, der ein Stack-Frame einem Dateinamen zuordnen kann. Beispiele finden Sie in den Erweiterungen vonAbstractSourceLookupDirector.
AbstractSourceLookupDirector sucht nach Quellendateien in Übereinstimmung mit einem bestimmten Quellcode-Suchpfad. Dieser Pfad wird als ein Bereich von ISourceContainer ausgedrückt. Die Quellencontainer, die nach der Quelle durchsucht werden sollen, werden üblicherweise gemäß den Einzelheiten der Quellkonfiguration, die gestartet wird, berechnet. ISourcePathComputer definiert die Schnittstelle für ein Objekt, das den entsprechenden Quellenpfad für eine Startkonfiguration berechnet. Ein Quellenpfad-Computer wird, ähnlich wie ein Quellenlokator, durch eine ID angegeben und kann in der Erweiterungsdefinition für einen Startkonfigurationstyp spezifiziert oder durch das Programm durch Setzen des Attributs ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID für die Startkonfiguration zugeordnet werden. Die ID für einen Quellenpfad-Computer ihrer implementierenden Klasse in dem Erweiterungspunkt org.eclipse.debug.core.sourcePathComputers zugeordnet. Das folgende Formatierungssteuerzeichen zeigt die Definition, die durch JDT für den Java-Quellenpfad-Computer verwendet wird:
<extension point="org.eclipse.debug.core.sourcePathComputers"> <sourcePathComputer id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer" class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer"> </sourcePathComputer> ...
Der Quellenpfad-Computer ist verantwortlich für die Berechnung eines Bereichs von ISourceContainer, der den Quellensuchpfad darstellt. So berücksichtigt z.B. der Java-Quellenpfad-Computer den Klassenpfad bei der Erstellung des Pfads.
Die Container, die als Teil des Quellensuchpfads angegeben sind, müssen ISourceContainer, wodurch der genannte Container nach einem benannten Quellenelement durchsucht werden kann. Es können verschiedene Quellencontainerarten erforderlich sein, um die verschiedenen Arten der Positionen, an denen Quellcode gespeichert ist, darzustellen. So definiert z.B. die JDT Quellencontainer, die die Quelle in einem Java-Projekt, die Quelle in einem Klassenpfad und die Quelle in einem Paketfragment darstellen. Die für eine Startkonfiguration verwendeten Quellencontainer können nach ID in der Startkonfiguration gespeichert werden. Da Startkonfigurationen bestehen bleiben können, muss es einen Weg geben, die ID eines Quellencontainers seiner Implementierungsklasse zuzuordnen. Dies erfolgt unter Verwendung des Erweiterungspunkts org.eclipse.debug.core.sourceContainerTypes. Die folgenden Befehle stammen aus der 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> ...