Body přerušení

Body přerušení umožňují uživatelům pozastavit provádění programu v určitém místě. Body přerušení jsou obvykle zobrazeny v uživatelském rozhraní společně se zdrojovým kódem. Pokud je během provádění programu nalezen bod přerušení, program se pozastaví a dojde ke spuštění události ladění POZASTAVIT, přičemž důvodem je BOD PŘERUŠENÍ.

Pokud váš modul plug-in potřebuje zobrazit body přerušení ve svém uživatelském rozhraní, můžete přidat IBreakpointListener do IBreakpointManager. IBreakpointManager je centrální autoritou pro všechny body přerušení. Body přerušení se přidávají a odebírají s použitím správce bodů přerušení, které naopak informuje veškeré listenery o aktivitě bodů přerušení. Činnost bodů přerušení lze zpřístupnit a znepřístupnit s použitím správce bodů přerušení. Správce bodů přerušení lze získat od DebugPlugin:

IBreakpointManager mgr = DebugPlugin.getDefault().getBreakpointManager();

Moduly plug-in, které definují své vlastní modely ladění a konfigurace spuštění musí mít obvykle definovány i své vlastní typy bodů přerušení. Body přerušení pro svůj konkrétní model ladění můžete implementovat definováním třídy, která implementuje IBreakpoint.

Body přerušení jsou implementovány použitím značkovačů prostředků. Připomeňme si, že značkovače prostředků umožňují přiřadit metainformace o prostředku ve formě pojmenovaných atributů. Implementací bodu přerušení s použitím značkovačů se modelu ladění zpřístupní všechny existující funkce značkovačů, tj. úložiště, hledání, přidávání, odstraňování a zobrazení v editorech.

Proč je důležité při používání bodů přerušení vědět o značkovačích?  Když vytváříte typ bodu přerušení, musíte rovněž specifikovat typ přidruženého značkovače. Každé rozšíření org.eclipse.debug.core.breakpoints by mělo být doprovázeno rozšířením org.eclipse.core.resources.markers.  To lze nejlépe demonstrovat, když se podíváte na rozšíření definovaná nástroji Java pro body rozšíření 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>

Modul plug-in ladění definuje zvláštní typ značkovače, org.eclipse.debug.core.breakpointMarker. Když definujete značkovač bodu přerušení, měli byste jej deklarovat použitím tohoto značkovače v supertypu. To modelu ladění umožní nalézt všechny potenciální body přerušení ve zdrojovém souboru vyhledáním podřízených typů jeho značkovače. Ve výše uvedeném příkladu má typ javaExceptionBreakpointMarker supertyp javaBreakpointMarker, jehož supertypem je opět breakpointMarker. javaExceptionBreakpoint (definovaný v rozšíření bodu přerušení) označuje javaExceptionBreakpointMarker jako svůj značkovač.

Co tohle všechno znamená? Jakmile kód ladění získá soubor zdrojového kódu, může vyhledat všechny značkovače, jejichž supertypem je org.eclipse.debug.core.breakpointMarker. Po nalezení všech těchto značkovačů lze použít registr rozšíření k namapování značkovačů na přidružené třídy bodů přerušení. Tímto způsobem může kód ladění platformy obecně nalézt všechny typu bodů přerušení, které byly nastaveny v určitém zdrojovém souboru.