Met onderbrekingspunten kunnen gebruikers de uitvoering van een programma op een bepaalde locatie onderbreken. Onderbrekingspunten worden gewoonlijk tezamen met de broncode in de gebruikersinterface afgebeeld. Wanneer tijdens de uitvoering van een programma een onderbrekingspunt wordt aangetroffen, wordt het programma onderbroken en een SUSPEND-foutopsporingsevent geïnitieerd, met BREAKPOINT (onderbrekingspunt) als reden.
Als u de onderbrekingspunten van uw plugin in de bijbehorende gebruikersinterface wilt afbeelden, moet u een IBreakpointListener toevoegen aan de IBreakpointManager. De IBreakpointManager is de centrale beheerinstantie voor alle onderbrekingspunten. Onderbrekingspunten worden toegevoegd en verwijderd via de onderbrekingspuntmanager, die op zijn beurt weer onderbrekingpuntactiviteiten doorgeeft aan eventuele listeners. Het (kunnen) bewerken van onderbrekingspunten kan worden ingeschakeld of uitgeschakeld met de onderbrekingspuntmanager. De onderbrekingspuntmanager kan worden verkregen via de DebugPlugin:
IBreakpointManager mgr = DebugPlugin.getDefault().getBreakpointManager();
Bij plugins met eigen foutopsporingsmodellen en startconfiguraties moeten vaak ook eigen soorten onderbrekingspunten worden gedefinieerd. U kunt onderbrekingspunten voor uw specifieke foutopsporingsmodel definiëren door een klasse te definiëren die IBreakpoint implementeert.
Onderbrekingspunten worden geïmplementeerd met resourcemerktekens. Wellicht weet u nog dat u resourcemerktekens aan metagegevens over een resource kunt koppelen in de vorm van benoemde kenmerken. Door een onderbrekingspunt met merktekens te implementeren, kan het foutopsporingsmodel gebruikmaken van alle bestaande merktekenfuncties zoals persistentie, zoekopdrachten, toevoegingen, verwijderingen en weergave in editors.
Waarom het belangrijk is om meer over merktekens te weten voor het gebruik van onderbrekingspunten Wanneer u een onderbrekingspunttype definieert, moet u ook een bijbehorend merktekentype opgeven. Elke extensie van org.eclipse.debug.core.breakpoints moet worden vergezeld van een extensie van org.eclipse.core.resources.markers. Dit kan het beste worden uitgelegd aan de hand van de extensies die zijn gedefinieerd in de Java-toolkit voor Java-onderbrekingspunten.
<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>
De debug-plugin definieert een speciaal type merkteken, org.eclipse.debug.core.breakpointMarker. Wanneer u een onderbrekingspuntmerkteken voor uw foutopsporingsprogramma definieert, moet u het declareren met dit merkteken als supertype. Zo stelt u het foutopsporingsmodel in staat om alle mogelijke onderbrekingspunten in een bronbestand te vinden door te zoeken naar subtypen van het bijbehorende merkteken. In het bovenstaande voorbeeld heeft javaExceptionBreakpointMarker een supertype, javaBreakpointMarker, waarvan breakpointMarker het bijbehorende supertype is. javaExceptionBreakpoint (gedefinieerd in de onderbrekingspuntextensie) wijst javaExceptionBreakpointMarker aan als bijbehorend merkteken.
Dat betekent het volgende. Wanneer door de foutopsporingscode een broncodebestand wordt opgehaald, kan dit worden doorzocht op alle merktekens met het supertype org.eclipse.debug.core.breakpointMarker. Wanneer alle merktekens gevonden zijn, kunnen deze aan de juiste onderbrekingspuntklassen worden toegewezen met behulp van het extensieregister. Op deze manier vindt de platformfoutopsporingscode over het algemeen alle typen onderbrekingspunten die voor een bepaald bronbestand zijn ingesteld.