ブレークポイントを使用すると、ユーザーは、プログラムの実行を特定の位置で中断できます。 ブレークポイントは一般的に、ソース・コードとともに UI に表示されます。 ブレークポイントが追加および除去されたときに通知されるように、IBreakpointListener を IBreakpointManager へ追加できます。 プログラムの実行中にブレークポイントが検出されると、プログラムが中断され、SUSPEND デバッグ・イベントがその理由である BREAKPOINT とともにトリガーされます。
独自のデバッグ・モデルと起動構成を定義するプラグインは多くの場合、独自のブレークポイント・タイプを定義する必要があります。 IBreakpoint をインプリメントするクラスを定義することによって、特定のデバッグ・モデル用のブレークポイントをインプリメントする必要があります。
ブレークポイントはリソース・マーカーでインプリメントされます。 リソース・マーカーを使用すると、リソースに関するメタ情報を名前付き属性の 形式で関連付けることができることを思い出してください。 マーカーを使用してブレークポイントをインプリメントすることによって、デバッグ・モデルは、 パーシスタンス、検索、追加、削除、エディターでの表示などの既存のマーカー機能をすべて利用できます。
ブレークポイントの使用時にマーカーに関する知識を持つことはなぜ重要なのでしょうか。 ブレークポイント・タイプを作成するときには、関連付けられたマーカー・タイプも指定する必要があります。 org.eclipse.debug.core.breakpoints のすべての拡張には、org.eclipse.core.resources.markers の拡張が付随している必要があります。 これは、Java ブレークポイントの 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>
デバッグ・プラグインは、特殊なマーカーのタイプ org.eclipse.debug.core.breakpointMarker を定義します。 マーカーを定義するとき、このマーカーをスーパータイプとして使用することによって宣言しなければなりません。 これでデバッグ・モデルは、そのマーカーのサブタイプを検索することによって、ソース・ファイル内で考えられる ブレークポイントを見つけることができます。 上の例では、javaExceptionBreakpointMarker はスーパータイプ javaBreakpointMarker を持ち、 そのスーパータイプは breakpointMarker です。 javaExceptionBreakpoint (ブレークポイント拡張に定義) は、そのマーカーとして javaExceptionBreakpointMarker を指定しています。
これはどういうことでしょうか。 デバッグ・コードがソース・コード・リソースを取得すると、スーパータイプが org.eclipse.debug.core.breakpointMarker であるすべてのマーカーを検索できます。 すべてのマーカーを検索し終えたら、次にプラグイン・レジストリーを使用して、マーカーを関連付けられたブレークポイント・クラスにマップできます。 この方法では、プラットフォーム・デバッグ・コードは一般的に、特定のソース・ファイルに設定されたすべてのブレークポイント・タイプを検出できます。