I bestemte oppstartsmoduser er det viktig å innhente kildekoden for det gjeldende utføringspunktet i koden. Dette gjøres vanligvis ved feilsøking eller profilering av et program. Via utvidelsespunktene fra plugin-modulen for feilsøking kan plugin-modulene registrere klasser som brukes til å søke etter kildekoden.
ISourceLocator og IPersistableSourceLocator definerer grensesnitt for tilordning fra et program som utføres, tilbake til kildekoden.
Kildeposisjonsvisere implementeres vanligvis for å fungere med tilhørende oppstartskonfigurasjon og oppstartskonfigurasjonsdelegat. Du kan oppgi en kildeposisjonsviser-ID når det er definert en oppstartskonfigurasjonstype, eller du kan tilknytte en ID programmatisk med en oppstartskonfigurasjon ved hjelp av attributtet ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID. I begge tilfeller må IDen til kildeposisjonsviseren på et eller annet tidspunkt behandles av klassen som implementerer IPersistableSourceLocator. Du oppretter tilknytningen mellom en kildeposisjonsviser-ID og klassen via utvidelsespunktet org.eclipse.debug.core.sourceLocators.
Kodetypen nedenfor er hentet fra Java-verktøy:
<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>
Siden oppstartskonfigurasjoner kan være faste, kan kildeposisjonsviser-IDer lagres sammen med oppstartskonfigurasjonen. Når du skal opprette en forekomst av en kildeposisjonsviser, søker plugin-modulen for feilsøking etter ID-attributtet for kildeposisjonsviseren og oppretter en forekomst av klassen som er tilknyttet IDen.
Implementeringen for kildeoppslag avhenger nødvendigvis av hva slags program som startes. Plattformen definerer imidlertid en abstrakt implementering for en kildeposisjonsviser som søker etter kildefiler i en gitt bane, med blant annet kataloger, zip-filer og jar-filer. Plugin-modulen kan utnytte denne implementeringen gjennom en utvidelse av AbstractSourceLookupDirector. Det eneste som kreves av implementeringen, er at den må oppgi en egnet ISourceLookupParticipant som kan tilordne en stakkramme til et filnavn. Du finner eksempler i utvidelsene av AbstractSourceLookupDirector.
AbstractSourceLookupDirector søker etter kildefiler i henhold til en bestemt oppslagsbane for kildekode. Denne banen uttrykkes som en matrise med ISourceContainer. Hvilke kildecontainere det skal søkes etter kilden i, avhenger vanligvis av spesifikasjonene i kildekonfigurasjonen som startes. ISourcePathComputer definerer grensesnittet til et objekt som behandler kildebanen for en oppstartskonfigurasjon. På samme måte som med kildeposisjonsvisere, angis kildebanebehandlere med IDer og kan angis i en utvidelsesdefinisjon for en oppstartskonfigurasjonstype eller tilknyttes et program ved å definere attributtet ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID for oppstartskonfigurasjonen. IDen for en kildebanebehandler tilknyttes implementeringsklassen i utvidelsespunktet org.eclipse.debug.core.sourcePathComputers. Kodetypen nedenfor viser hvordan JDT definerer Java-kildebanebehandleren:
<extension point="org.eclipse.debug.core.sourcePathComputers"> <sourcePathComputer id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer" class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer"> </sourcePathComputer> ...
Kildebanebehandleren skal behandle en matrise med ISourceContainer, som representerer kildeoppslagsbanen. For eksempel ser Java-kildebanebehandleren på klassebanen når banen bygges.
Containere som er oppgitt som en del av kildeoppslagsbanen, må implementere ISourceContainer, som kan søke i containeren for et navngitt kildeelemelent. Det kan være nødvendig å angi ulike kildecontainere fordi kildekoden kan være lagret på ulike typer steder. JDT definerer for eksempel kildecontainere for kilden i et Java-prosjekt, kilden i klassebanen og kilden i et pakkefragment. Kildecontainere som brukes for en oppstartskonfigurasjon kan lagres med ID i oppstartskonfigurasjonen. Siden oppstartskonfigurasjoner kan være faste, må det være mulig å knytte IDen for en kildecontainer til implementeringsklassen. Dette gjøres ved hjelp av utvidelsespunktet org.eclipse.debug.core.sourceContainerTypes. Eksempelet nedenfor er fra 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> ...