중단점에 대한 기본 정보를 확인하는 데 사용할 수 있는 여러 가지 메서드가 있습니다.
GetId 는 중단점 ID를 반환합니다.
GetType 은 중단점 유형(소프트웨어 또는 프로세서)과 중단점이 설정된 유효 프로세서의 형식을 반환합니다.
GetAdder 는 중단점을 추가한 클라이언트를 반환합니다.
GetOffset 은 중단점의 주소를 반환합니다.
GetOffsetExpression 은 중단점의 위치를 지정하는 식 문자열을 반환합니다.
해당 위치 및 중단점 유형 외에도 중단점에는 동작을 제어하는 여러 매개 변수가 있습니다.
중단점 매개 변수는 다양한 특정 메서드를 통해 제어할 수 있습니다. 또한 대부분의 매개 변수는 GetParameters를 사용하여 함께 쿼리할 수 있습니다.
중단점 플래그
중단점 플래그는 중단점 매개 변수의 한 종류입니다.
GetFlags를 사용하여 중단점 플래그를 쿼리할 수 있습니다. AddFlags, RemoveFlags 또는 SetFlags를 사용하여 변경할 수 있습니다.
중단점 플래그는 비트 필드를 형성합니다. 이 비트 필드에 사용할 수 있는 가능한 플래그와 해당 의미는 다음과 같습니다.
DEBUG_BREAKPOINT_ENABLED
이 플래그를 설정하면 중단점이 활성화되고 정상적인 효과가 적용됩니다. 이 플래그를 설정하지 않으면 중단점이 비활성화 되고 아무런 영향도 미치지 않습니다. 중단점을 일시적으로 비활성화하려는 경우 이 플래그를 제거할 수 있습니다. 그러면 이 중단점을 다시 사용하도록 설정하려는 경우 이 플래그를 쉽게 다시 추가할 수 있습니다.
DEBUG_BREAKPOINT_ADDER_ONLY (디버그 브레이크포인트 애더 전용)
이 플래그가 설정되면 중단점은 프라이빗 중단점입니다. 이 중단점은 중단점을 추가한 클라이언트에만 표시됩니다. 이 경우 다른 클라이언트는 엔진에서 중단점을 쿼리할 수 없으며 엔진은 중단점에서 생성된 이벤트를 다른 클라이언트에 보내지 않습니다. 이 중단점과 관련된 모든 콜백(이벤트 및 출력)은 이 클라이언트로만 전송됩니다.
GetAdder를 참조하세요.
DEBUG_BREAKPOINT_GO_ONLY
이 플래그를 설정하면 대상을 무제한으로 실행하는 경우에만 중단점이 트리거됩니다. 엔진이 대상의 명령어를 단계별로 실행할 경우 트리거되지 않습니다.
DEBUG_BREAKPOINT_ONE_SHOT
이 플래그가 설정되면 중단점이 처음 트리거될 때 자동으로 제거됩니다.
DEBUG_BREAKPOINT_DEFERRED (디버그 중단점 연기됨)
이 플래그가 설정되면 중단점이 지연됩니다. 이 플래그는 심볼 식을 사용하여 중단점의 오프셋을 지정하고 엔진이 식을 평가할 수 없는 경우 엔진에 의해 설정됩니다. 모듈이 대상에 로드되거나 해제될 때마다 엔진은 식을 사용하여 위치가 지정된 모든 중단점에 대한 식을 다시 평가하려고 시도합니다. 평가할 수 없는 항목은 지연으로 플래그가 지정됩니다. 이 플래그는 클라이언트에서 수정할 수 없습니다.
기타 중단점 매개 변수
중단점 매개 변수에는 다음이 포함됩니다.
통과 횟수
중단점에 연결된 패스 수가 있는 경우 대상에서 지정된 횟수만큼 중단점을 통과할 때까지 활성화되지 않습니다. 원래 설정된 패스 수는 GetPassCount를 사용하여 찾을 수 있습니다.
GetCurrentPassCount를 사용하여 엔진이 활성화되기 전에 중단점을 지나야 하는 남은 횟수를 찾을 수 있습니다.
SetPassCount를 사용하여 패스 수를 새 값으로 다시 설정할 수 있습니다.
스레드 일치
중단점에 연결된 스레드가 있는 경우 다른 스레드에서 발견되면 엔진에서 무시됩니다.
GetMatchThreadId를 사용하여 스레드를 찾을 수 있으며 SetMatchThreadId를 사용하여 변경할 수 있습니다.
명령
중단점에 연결된 명령이 있을 수 있습니다. 중단점이 활성화될 때 명령이 실행됩니다. 이 명령은 GetCommand를 사용하여 찾을 수 있으며 SetCommand를 사용하여 변경할 수 있습니다.
크기
중단점이 프로세서 중단점인 경우 지정된 크기여야 합니다. 그러면 액세스가 중단점을 활성화하는 메모리 블록의 크기가 결정됩니다. 블록의 시작은 중단점의 위치입니다. 크기는 GetDataParameters를 사용하여 찾을 수 있으며 SetDataParameters를 사용하여 변경할 수 있습니다.
액세스 유형
중단점이 프로세서 중단점인 경우 액세스 유형이 있어야 합니다. 그러면 중단점을 활성화할 액세스 유형이 결정됩니다. 예를 들어 대상이 중단점에서 지정한 메모리를 읽거나 쓰거나 실행하는 경우 중단점이 활성화될 수 있습니다. 액세스 형식은 GetDataParameters를 사용하여 찾을 수 있으며 SetDataParameters를 사용하여 변경할 수 있습니다.
프로세서 중단점에 대한 유효한 매개 변수
프로세서 중단점에 사용할 수 있는 액세스 유형은 다음과 같습니다.
가치 | 설명 |
---|---|
디버그_브레이크_읽기 |
중단점은 CPU가 중단점의 메모리 블록에서 메모리를 읽을 때 트리거됩니다. |
DEBUG_BREAK_WRITE (디버그_브레이크_쓰기) |
중단점은 CPU가 중단점의 메모리 블록에 메모리를 쓸 때 트리거됩니다. |
DEBUG_BREAK_READ | DEBUG_BREAK_WRITE | 중단점은 CPU가 중단점의 메모리 블록에서 메모리를 읽거나 쓸 때 트리거됩니다. |
DEBUG_BREAK_EXECUTE |
중단점은 CPU가 중단점의 메모리 블록에서 명령을 가져올 때 트리거됩니다. |
DEBUG_BREAK_IO |
중단점 메모리 블록의 I/O 포트에 액세스할 때 중단점이 트리거됩니다. (Windows XP 및 Microsoft Windows Server 2003 전용, 커널 모드만, x86만 해당) |
모든 프로세서에서 모든 액세스 유형 및 크기가 지원되는 것은 아닙니다. 지원되는 액세스 유형 및 크기는 다음과 같습니다.
x86
모든 액세스 유형이 지원됩니다. DEBUG_BREAK_READ는 DEBUG_BREAK_READ | DEBUG_BREAK_WRITE처럼 작동합니다. 크기는 1, 2 또는 4여야 합니다. 중단점의 주소는 크기의 배수여야 합니다.
x64
모든 액세스 유형이 지원됩니다. DEBUG_BREAK_READ는 DEBUG_BREAK_READ | DEBUG_BREAK_WRITE와 같은 동작을 합니다. 크기는 1, 2, 4 또는 8이어야 합니다. 중단점의 주소는 크기의 배수여야 합니다.