Punti di interruzione

I punti di interruzione consentono di sospendere l'esecuzione di un programma in una determinata posizione.   Vengono generalmente visualizzati nella UI insieme al codice di origine.  È possibile aggiungere un IBreakpointListener a un IBreakpointManager per essere notificati dell'aggiunta e della rimozione di un punto di interruzione.   Quando viene rilevato un punto di interruzione durante l'esecuzione di un programma, il programma viene sospeso e viene attivato un evento di debug SUSPEND con BREAKPOINT indicato come causa.  

I plug-in che definiscono i propri modelli di debug e configurazioni di avvio spesso devono definire tipi di punti di interruzione personalizzati.   È possibile implementare i punti di interruzione per un determinato modello di debug definendo una classe che implementa IBreakpoint

I punti di interruzione vengono implementati utilizzando gli indicatori di risorse.  È importante ricordare che gli indicatori di risorse consentono di associare meta-informazioni su una risorsa sotto forma di attributi denominati.  Implementando un punto di interruzione mediante gli indicatori, il modello di debug può fare uso di tutte le funzioni degli indicatori esistenti, quali la persistenza, la ricerca, l'aggiunta, l'eliminazione e la visualizzazione negli editor.

È importante quindi avere informazioni sull'indicatore in uso quando si utilizzano i punti di interruzione.  Quando si crea un tipo di punto di interruzione, è necessario anche specificare un tipo di indicatore associato.   Ogni estensione di org.eclipse.debug.core.breakpoints deve essere accompagnata da un'estensione di org.eclipse.core.resources.markers.  La dimostrazione migliore di questo fenomeno si ottiene esaminando le estensioni definite dalla strumentazione Java per i punti di interruzione Java.

<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>

Il plug-in di debug definisce un tipo speciale di indicatore, org.eclipse.debug.core.breakpointMarker.  Quando si definisce un indicatore, è necessario dichiararlo utilizzando l'indicatore come super tipo.  Questo consente al modello di debug di trovare tutti i possibili punti di interruzione all'interno di un file di origine attraverso la ricerca di sottotipi del relativo indicatore.   Nell'esempio appena riportato, javaExceptionBreakpointMarker presenta un super tipo, javaBreakpointMarker, il cui super tipo a sua volta è breakpointMarkerjavaExceptionBreakpoint  (definito nell'estensione del punto di interruzione) designa javaExceptionBreakpointMarker come suo indicatore.

Pertanto,  quando il codice di debug ottiene una risorsa del codice di origine, può eseguire una ricerca di tutti gli indicatori il cui super tipo sia org.eclipse.debug.core.breakpointMarker.  Dopo aver trovato tutti i membri, può quindi utilizzare il registro dei plug-in per associare gli indicatori alle classi dei punti di interruzione collegati.   In questo modo, il codice di debug della piattaforma può genericamente trovare tutti i tipi di punti di interruzione impostati su un determinato file di origine.

 

Copyright IBM Corporation e altri 2000, 2003.