중단점을 사용하면 특정 위치에서 프로그램 실행을 일시중단할 수 있습니다. 중단점은 일반적으로 소스 코드와 함께 UI에 표시됩니다. 프로그램 실행 도중 중단점이 나타난 경우 프로그램은 BREAKPOINT를 사용하여 SUSPEND 디버그 이벤트를 일시중단한 후 트리거합니다.
플러그인에서 해당 UI에 중단점을 표시해야 하는 경우 IBreakpointListener를 IBreakpointManager에 추가할 수 있습니다. 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인 모든 마커에서 검색할 수 있습니다. 모든 마커를 찾으면 확장 레지스트리를 사용하여 마커를 이와 연관된 중단점 클래스에 맵핑할 수 있습니다. 이 방법을 통해 플랫폼 디버그 코드는 일반적으로 특정 소스 파일에 설정된 모든 중단점 유형을 찾을 수 있습니다.