중단점

중단점을 사용하면 특정 위치에서 프로그램 실행을 일시중단할 수 있습니다. 중단점은 일반적으로 소스 코드와 함께 UI에 표시됩니다. 프로그램 실행 도중 중단점이 나타난 경우 프로그램은 BREAKPOINT를 사용하여 SUSPEND 디버그 이벤트를 일시중단한 후 트리거합니다.

플러그인에서 해당 UI에 중단점을 표시해야 하는 경우 IBreakpointListenerIBreakpointManager에 추가할 수 있습니다. IBreakpointManager는 모든 중단점에 대한 핵심 권한에 해당합니다. 중단점 관리자를 사용하여 중단점이 추가 및 제거됩니다. 이때 중단점 관리자에서는 중단점 활동을 모든 리스너에게 순서대로 알립니다. 중단점 조작은 중단점 관리자를 사용하여 사용/사용 안함으로 설정할 수 있습니다. 중단점 관리자는 DebugPlugin에서 가져올 수 있습니다.

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

자체 디버그 모델을 정의하고 구성을 자주 실행하는 플러그인은 고유한 중단점 유형을 정의해야 합니다. 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인 모든 마커에서 검색할 수 있습니다. 모든 마커를 찾으면 확장 레지스트리를 사용하여 마커를 이와 연관된 중단점 클래스에 맵핑할 수 있습니다. 이 방법을 통해 플랫폼 디버그 코드는 일반적으로 특정 소스 파일에 설정된 모든 중단점 유형을 찾을 수 있습니다.