Unterbrechungspunkte

Mit Hilfe von Unterbrechungspunkten können Benutzer die Ausführung eines Programms an einer bestimmten Stelle aussetzen.   Unterbrechungspunkte werden in der Benutzerschnittstelle normalerweise zusammen mit dem Quellcode angezeigt.  Sie können ein Objekt IBreakpointListener zu einem Objekt IBreakpointManager hinzufügen, um beim Hinzufügen und Entfernen von Unterbrechungspunkten benachrichtigt zu werden.  Wenn während der Ausführung des Programms ein Unterbrechungspunkt festgestellt wird, setzt das Programm aus und löst ein Debugereignis SUSPEND mit der Ursache BREAKPOINT aus.  

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 mit Markierungen kann das Debugmodell alle vorhandenen Markierungsfunktionen wie Permanenz, Suche, Hinzufügen, Löschen und Anzeigen in Editoren verwenden.

Warum ist es nun so wichtig, Kenntnisse über Markierungen zu besitzen, wenn Sie Unterbrechungspunkte verwenden?  Beim Erstellen eines Unterbrechungspunkttyps müssen Sie auch einen zugeordneten Markierungstyp angeben.   Jede Erweiterung von org.eclipse.debug.core.breakpoints sollte durch eine Erweiterung von org.eclipse.core.resources.markers begleitet sein.  Dies kann am Besten anhand der Erweiterungen nachvollzogen werden, die durch die Java-Tools für Java-Unterbrechungspunkte definiert werden.

<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 speziellen Markierungstyp namens org.eclipse.debug.core.breakpointMarker.  Wenn Sie eine Markierung definieren, sollten Sie diese Markierung bei ihrer Deklaration als Supertyp verwenden.   Auf diese Weise kann das Debugmodell alle möglichen Unterbrechungspunkte in einer Quellendatei ermitteln, indem nach Suptypen der Markierungen gesucht wird.  Im oben dargestellten Beispiel hat javaExceptionBreakpointMarker einen Supertyp namens javaBreakpointMarker, dessen Supertyp breakpointMarker ist.  Der in der Unterberechungspunkterweiterung definierte javaExceptionBreakpoint  gibt javaExceptionBreakpointMarker als seine Markierung an.

Der Zweck dieses Vorgehens ist, dass der Debugcode beim Erhalt einer Quellcoderessource nach allen Markierungen suchen kann, deren Supertyp org.eclipse.debug.core.breakpointMarker lautet.  Nachdem alle Markierungen gefunden wurden, können die Markierungen mit Hilfe der Plug-in-Registrierung ihren zugehörigen Unterbrechungspunktklassen zugeordnet werden.  Auf diese Weise kann der Debugcode der Plattform generisch nach allen Unterbrechungspunkttypen suchen, die für eine bestimmte Quellendatei definiert wurden.

 

Copyright IBM Corporation und Andere 2000, 2003.