För vissa typer av startlägen, kan det vara viktigt att skaffa fram källkoden som motsvarar aktuell körpunkt i koden. Detta är ofta viktigt när ett program felsöks eller profileras. Flera olika utökningspunkter finns i insticksprogrammet för felsökning som gör det möjligt för insticksprogram att registrera klasser som kan hjälpa till med att lokalisera källkoden.
ISourceLocator och IPersistableSourceLocator definierar gränssnitt för att avbilda ett körbart program tillbaka till källkoden.
Källpositionerare implementeras vanligtvis för att fungera med en motsvarande startkonfiguration och startkonfigurationsdelegat. En källpositionerares ID kan anges när en startkonfigurationstyp definieras eller så kan det associeras programmässigt via en startkonfiguration med hjälp av attributet ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID. I bägge fallen måste ID för en källpositionerare vid något tillfälle anges för den klass som implementerar IPersistableSourceLocator. Associationen mellan en källpositionerares ID och dess klass upprättas med hjälp av utökningspunkten org.eclipse.debug.core.sourceLocators.
Följande kodstycke är från Java-verktygen:
<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>
Eftersom startkonfigurationer kan vara beständiga, kan ID:er för källpositionerare lagras med startkonfigurationen. När det är dags att instantiera en källpositionerare, tittar insticksprogrammet för felsökning i attributet för källpositionerarens ID och instantierar den klass som är associerad till detta ID.
Implementering av källkodssökning beror på den typ av program som startas. I plattformen definieras dock en abstrakt implementering för en källpositionerare som söker efter källfiler på en given sökväg som innefattar kataloger, zippfiler, jarfiler o.dyl. För att dra nytta av denna implementering kan ditt insticksprogam utöka AbstractSourceLookupDirector. Allt som behövs från den specifika implementeringen är möjligheten att tillhandahålla en lämplig ISourceLookupParticipant, som kan avbilda en stackram till ett filnamn. Under expanderare i AbstractSourceLookupDirector. finns exempel.
AbstractSourceLookupDirector söker efter källfiler enligt en viss källkodssökväg. Denna sökväg uttrycks som en vektor av ISourceContainer. De källkodsbehållare som genomsökas på jakt efter källan beräknas normalt enligt specifikationerna i den källkonfiguration som ska startas. ISourcePathComputer definierar gränssnittet för ett objekt som räknar fram lämplig källsökväg för en startkonfiguration. En källsökvägsdator, som är mycket lik en källpositionerare, anges efter ID och kan specificeras i tilläggsdefinitionen för en startkonfigurationstyp eller associeras programmässigt genom att attributet ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID ställs in för startkonfigurationen. ID för en källsökvägsdator associeras till dess implementeringsklass i utökningspunkten org.eclipse.debug.core.sourcePathComputers. Följande kodstycke visar definitionen som används av JDT för sin Java-källsökvägsdator:
<extension point="org.eclipse.debug.core.sourcePathComputers"> <sourcePathComputer id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer" class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer"> </sourcePathComputer> ...
Källsökvägsdatorn ansvarar för uträkning av en vektor för ISourceContainer som representerar källsökvägen. Java-källsökvägsdatorn tar t.ex. hänsyn till klassökvägen när sökvägen byggs.
De behållare som anges som en del av en källsökväg måste implementera ISourceContainer, som kan söka i den behållare som representerar ett namngivet källelement. Olika typer av källkodsbehållare måste eventuellt representera de olika typerna av platser där källkoden lagras. JDT definierar t.ex. källkodsbehållare som representerar källan i ett Java-projekt, källan på klassökvägen och källan i ett inpackat fragment. Källkodsbehållare som används för en startkonfiguration kan lagras efter ID i startkonfigurationen. Eftersom startkonfigurationer kan vara beständiga, måste källkodsbehållarens ID på något sätt associeras till tillhörande implementeringsklass. Det görs med hjälp av utökningspunkten org.eclipse.debug.core.sourceContainerTypes. Följande exempel kommer från 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> ...