Unterbrechungspunkte erlauben es Benutzern, die Ausführung eines Programms an einer bestimmten Position zu auszusetzen. Unterbrechungspunkte werden in der Benutzerschnittstelle normalerweise zusammen mit dem Quellcode angezeigt. Wenn ein Unterbrechungspunkt während der Ausführung eines Programms gefunden wird, setzt das Programm aus und löst ein Debugereignis SUSPEND mit der Ursache BREAKPOINT aus.
Wenn Ihr Plug-in in seiner Benutzerschnittstellle Unterbrechungspuinkte zeigen muss, können Sie einen IBreakpointListener zum IBreakpointManager hinzufügen. Der IBreakpointManager ist die zentrale Berechtigung über allen Unterbrechungspunkten. Unterbrechungspunkte werden mit Hilfe des Breakpoint-Managers hinzugefügt und entfernt, der wiederum alle Listener-Funktionen über Unterbrechungspunktaktivitäten informiert. Die Verarbeitung von Unterbrechungspunkten kann mit Hilfe des Breakpoint-Managers aktiviert oder deaktiviert werden. Den Breakpoint-Manager erhalten Sie über DebugPlugin:
IBreakpointManager mgr = DebugPlugin.getDefault().getBreakpointManager();
Plug-ins, die eigene Debugmodelle und Startkonfigurationen definieren, müssen häufig auch eigene Unterbrechungspunkttypen definieren. Unterbrechungspunkte f³r ein bestimmtes Debugmodell können Sie implementieren, indem Sie eine Klasse definieren, die IBreakpoint implementiert.
Unterbrechungspunkte werden unter Verwendung von Ressourcenmarkierungen implementiert. Zur Erinnerung: Mit Ressourcenmarkierungen können Sie Metainformationen zu einer Ressource in Form von benannten Attributen zuordnen. Durch die Implementierung eines Unterbrechungspunktes unter Verwendung von Markierungen kann das Debugmodell alle vorhandenen Markierungsfunktionen wie z.B. Permanenz, Suchen, Hinzufügen und Anzeigen in Editoren nutzen.
Warum ist es so wichtig, für die Verwendung von Unterbrechungspunkten über Markierungen bescheid zu wissen? Wenn Sie einen Unterbrechungspunkttyp erstellen, müssen Sie auch einen zugeordneten Markierungstyp angeben. Jede Erweiterung von org.eclipse.debug.core.breakpoints sollte von einer Erweiterung von org.eclipse.core.resources.markers begleitet werden. Am deutlichsten wird dies bei der Betrachtung der Erweiterung, die Java-Tools für Java-Unterbrechungspunkte definieren.
<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>
Das Debug-Plug-in definiert einen bestimmen Markierungstyp, org.eclipse.debug.core.breakpointMarker. Wenn Sie eine Unterbrechungspunktmarkierung für Ihren Debugger definieren, sollten Sie ihn unter Verwendung dieser Markierung als einen Supertyp deklarieren. Dadurch kann das Debugmodell alle möglichen Unterbrechungspunkte innerhalb einer Quellendatei durch die Suche nach Supertypen seiner Markierung finden. In dem obigen Beispiel hat javaExceptionBreakpointMarker einen Supertyp, javaBreakpointMarker, dessen Supertyp breakpointMarker ist. javaExceptionBreakpoint (definiert in der Erweiterung des Unterbrechungspunkts) bezeichnet javaExceptionBreakpointMarker als seine Markierung.
Was bedeutet das alles? Wenn der Debugcode eine Quellcodedatei enthält, kann er nach allen Markierungen suchen, deren Supertyp org.eclipse.debug.core.breakpointMarker ist. Nachdem alle Markierungen gefunden worden sind, kann er mit Hilfe der Erweiterungsregistry die Markierungen ihren entsprechenden Unterbrechungspunktklassen zuordnen. Auf diese Weise kann der Debugcode der Plattform generisch alle Unterbrechungspunkttypen finden, die in einer bestimmten Quellendatei gesetzt worden sind.