ブレークポイント

ブレークポイントを使用すると、ユーザーは、プログラムの実行を特定の位置で中断できます。 ブレークポイントは一般的に、ソース・コードとともに UI に表示されます。 ブレークポイントが追加および除去されたときに通知されるように、IBreakpointListenerIBreakpointManager へ追加できます。 プログラムの実行中にブレークポイントが検出されると、プログラムが中断され、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 であるすべてのマーカーを検索できます。 すべてのマーカーを検索し終えたら、次にプラグイン・レジストリーを使用して、マーカーを関連付けられたブレークポイント・クラスにマップできます。 この方法では、プラットフォーム・デバッグ・コードは一般的に、特定のソース・ファイルに設定されたすべてのブレークポイント・タイプを検出できます。 

 

Copyright IBM Corporation and others 2000, 2003.