Keskeytyskohdat

Keskeytyskohtien avulla käyttäjä voi keskeyttää ohjelman suorituksen tietyssä sijainnissa. Keskeytyskohdat näkyvät käyttöliittymässä yleensä lähdekoodin rinnalla. Kun ohjelman suorituksen aikana ilmenee keskeytyskohta, ohjelma keskeytyy ja liipaisee SUSPEND-vianmääritystapahtuman, jonka syynä on BREAKPOINT.

Jos keskeytyskohtien pitää näkyä lisäosan käyttöliittymässä, voit lisätä IBreakpointListener-rajapinnan IBreakpointManager-rajapintaan. IBreakpointManager-rajapinnalla on valtuudet kaikkiin keskeytyskohtiin. Keskeytyskohtia voi lisätä ja poistaa keskeytyskohtien hallintaohjelman avulla, joka puolestaan ilmoittaa kuuntelutoiminnoille keskeytyskohtien toiminnasta. Keskeytyskohtien hallintaohjelman avulla keskeytyskohtia voi myös ottaa käyttöön tai poistaa käytöstä. Hallintajärjestelmän voi noutaa DebugPlugin-luokasta:

IBreakpointManager mgr = DebugPlugin.getDefault().getBreakpointManager();

Niiden lisäosien, jotka määrittävät omat vianmääritysmallinsa ja aloituskokoonpanonsa, täytyy usein määrittää omat keskeytyskohdan lajinsa. Vianmääritysmallin keskeytyskohdat voi toteuttaa määrittämällä luokan, joka toteuttaa IBreakpoint-rajapintaa.

Keskeytyskohdat toteutetaan resurssien merkintöjen avulla. Resurssien merkintöjen avulla voi resurssia koskevia metatietoja yhdistellä nimetyiksi määritteiksi. Kun vianmääritysmalli toteuttaa keskeytyskohdan merkintöjen avulla, se voi samalla käyttää merkintöjen toimintoja, kuten muokkausohjelmien pysyvyyttä, hakua, lisäystä, poistoa ja näyttöä.

Keskeytyskohtia käytettäessä on tärkeää tuntea merkinnät. Kun keskeytyskohdan laji luodaan, siihen liittyvän merkinnän laji pitää määrittää myös. Jokaista org.eclipse.debug.core.breakpoints-laajennusta pitäisi seurata org.eclipse.core.resources.markers-laajennus.  Tämän ymmärtää parhaiten perehtymällä laajennuksiin, jotka Java-työvälinejärjestelmä on määrittänyt Java-keskeytyskohtia varten.

<extension id="javaBreakpointMarker" point="org.eclipse.core.resources.markers">
	<super type="org.eclipse.debug.core.breakpointMarker"/>
</extension>

<extension id="javaExceptionBreakpointMarker" point="org.eclipse.core.resources.markers">
	<super type="org.eclipse.jdt.debug.javaBreakpointMarker"/>
	<persistent value="true"/>
	<attribute name="org.eclipse.jdt.debug.core.caught"/>
	<attribute name="org.eclipse.jdt.debug.core.uncaught"/>
	<attribute name="org.eclipse.jdt.debug.core.checked"/>
</extension>
<extension point="org.eclipse.debug.core.breakpoints">
	<breakpoint
		id="javaExceptionBreakpoint"
		markerType="org.eclipse.jdt.debug.javaExceptionBreakpointMarker"
		class="org.eclipse.jdt.internal.debug.core.breakpoints.JavaExceptionBreakpoint">
	</breakpoint>
</extension>

Vianmääritys-lisäosa määrittää erään merkintälajin, joka on org.eclipse.debug.core.breakpointMarker. Kun määritetään vianmääritysohjelman keskeytyskohdan merkintää, se pitää esitellä siten, että merkintää käytetään ylilajina. Näin vianmääritysmalli voi löytää lähdetiedostosta kaikki mahdolliset keskeytyskohdat etsimällä sen merkinnän ylilajeja. Yllä olevassa esimerkissä javaExceptionBreakpointMarker-laajennuksen ylilaji on javaBreakpointMarker, jonka ylilaji taas on breakpointMarker. javaExceptionBreakpoint, joka on määritetty keskeytyskohdan tunnisteessa, määrittää merkinnäkseen javaExceptionBreakpointMarker.

Tämä tarkoittaa seuraavaa: Kun vianmäärityskoodi noutaa lähdekoodin tiedoston, se voi hakea kaikkia niitä merkintöjä, joiden ylilaji on org.eclipse.debug.core.breakpointMarker. Kun se on löytänyt kaikki merkinnät, se voi määrittää merkinnät niihin liittyviin keskeytyskohdan luokkiin laajennusrekisterin avulla. Näin käyttöympäristön vianmäärityskoodi voi löytää kaikki keskeytyskohdan lajit, jotka on määritetty tietylle lähdetiedostolle.