Unterbrechungspunkte

Unterbrechungspunkte erlauben es Benutzern, die Ausführung eines Programms an einer bestimmten Position zu auszusetzen. Unterbrechungspunkte werden normalerweise in der Benutzerschnittstelle zusammen mit dem Quellcode angezeigt.  Sie können einenIBreakpointListener zu einem IBreakpointManager hinzufügen, um benachrichtigt zu werden, wenn Unterbrechungspunkte hinzugefügt oder entfernt 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: über 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 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 des Objekts org.eclipse.debug.core.breakpoints sollte mit der Erweiterung des Objekts org.eclipse.core.resources.markers einhergehen.  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 Markierung definieren, sollten Sie sie so deklarieren, dass sie diese Markierung als Supertyp verwendet.  Hierdurch kann das Debugmodell alle möglichen Unterbrechungspunkte in einer Quellendatei finden, indem es nach Subtypen seiner Markierung sucht.   Im voranstehenden Beispiel hat javaExceptionBreakpointMarker einen Supertyp javaBreakpointMarker, dessen Supertyp breakpointMarker ist.  Das Objekt javaExceptionBreakpoint  (in der Unterbrechungspunkterweiterung definiert) bestimmt javaExceptionBreakpointMarker als die zugehörige Markierung.

Was bedeutet das alles?  Wenn der Debugcode eine Quellcoderessource erhält, so kann er nach allen Markierungen mit dem Supertyp org.eclipse.debug.core.breakpointMarker suchen.  Nachdem er alle Markierungen gefunden hat, kann er dann die Plug-in-Registrierungsdatenbank verwenden, um die Markierungen den entsprechenden Unterbrechungspunktklassen zuzuordnen. Auf diese Art kann der Debugcode der Plattform auf generische Weise alle Unterbrechungspunkttypen finden, die in eine bestimmte Quellendatei eingefügt wurden.

 

Rechtshinweise.