sx, sxd, sxe, sxi, sxn, sxr, sx- (예외 설정)
sx 명령은 디버그 중인 애플리케이션에서 예외가 발생하거나 특정 이벤트가 발생할 때 디버거가 수행하는 작업을 제어합니다.
sx
sx{e|d|i|n} [-c "Cmd1"] [-c2 "Cmd2"] [-h] {Exception|Event|*}
sx- [-c "Cmd1"] [-c2 "Cmd2"] {Exception|Event|*}
sxr
매개 변수
-c "Cmd1"
예외 또는 이벤트가 발생할 경우 실행되는 명령을 지정합니다. 이 명령은 이 예외가 디버거로 중단되는지 여부에 관계없이 이 예외를 처리할 수 있는 첫 번째 기회가 발생할 때 실행됩니다. Cmd1 문자열을 따옴표로 묶어야 합니다. 이 문자열은 세미콜론으로 구분하는 경우 여러 명령을 포함할 수 있습니다. -c와 따옴표 붙은 명령 문자열 사이의 공간은 선택 사항입니다.
-c2"Cmd2"
예외 또는 이벤트가 발생하고 첫 번째 기회에 처리되지 않는 경우 실행되는 명령을 지정합니다. 이 명령은 이 예외가 디버거로 중단되는지 여부에 관계없이 이 예외를 처리할 수 있는 두 번째 기회가 발생할 때 실행됩니다. Cmd2 문자열을 따옴표로 묶어야 합니다. 이 문자열은 세미콜론으로 구분하는 경우 여러 명령을 포함할 수 있습니다. -c2와 따옴표 붙은 명령 문자열 사이의 공간은 선택 사항입니다.
-h
중단 상태 대신 지정된 이벤트의 처리 상태 변경합니다. Event가 cc, hc, bpec 또는 ssec인 경우 -h 옵션을 사용할 필요가 없습니다.
Exception
명령이 현재 radix에서 작동하는 예외 번호를 지정합니다.
이벤트
명령이 작동하는 이벤트를 지정합니다. 이러한 이벤트는 짧은 약어로 식별됩니다. 이벤트 목록은 예외 및 이벤트 제어를 참조하세요.
*
sx에 대해 명시적으로 명명되지 않은 모든 예외에 영향을 줍니다. 명시적으로 명명된 예외 목록은 예외 및 이벤트 제어를 참조하세요.
Environment
모드 | 사용자 모드, 커널 모드 |
대상 | 라이브 디버깅만 |
플랫폼 | 모두 |
추가 정보
중단 상태 및 상태 처리, 모든 이벤트 코드에 대한 설명, 모든 이벤트에 대한 기본 상태 목록 및 이 상태 제어하는 다른 방법에 대한 자세한 내용은 예외 및 이벤트 제어를 참조하세요.
설명
sx 명령은 현재 프로세스에 대한 예외 목록과 예외가 아닌 모든 이벤트 목록을 표시하고 각 예외 및 이벤트에 대한 디버거의 기본 동작을 표시합니다.
sxe, sxd, sxn 및 sxi 명령은 각 예외 및 이벤트에 대한 디버거 설정을 제어합니다.
sxr 명령은 모든 예외 및 이벤트 필터 상태를 기본 설정으로 다시 설정합니다. 예를 들어 명령이 지워지고 중단되고 계속 옵션이 기본 설정으로 다시 설정됩니다.
sx- 명령은 지정된 예외 또는 이벤트의 처리 상태 또는 중단 상태 변경하지 않습니다. 이 명령은 특정 이벤트와 연결된 첫 번째 기회 명령 또는 두 번째 기회 명령을 변경하지만 다른 것은 변경하지 않으려는 경우에 사용할 수 있습니다.
-h 옵션을 포함하는 경우(또는 cc, hc, bpec 또는 ssec 이벤트가 지정된 경우) sxe, sxd, sxn 및 sxi 명령은 예외 또는 이벤트의 처리 상태 제어합니다. 다른 모든 경우에서 이러한 명령은 예외 또는 이벤트의 중단 상태 제어합니다.
중단 상태 설정할 때 이러한 명령은 다음과 같은 효과를 줍니다.
명령 | 상태 이름 | Description |
---|---|---|
sxe | 휴식 (사용) |
이 예외가 발생하면 다른 오류 처리기가 활성화되기 전에 대상이 디버거로 즉시 중단됩니다. 이러한 종류의 처리를 첫 번째 기회 처리라고 합니다. |
sxd | 두 번째 기회 휴식 (사용 안 함) |
디버거는 이 형식의 첫 번째 예외에 대해 중단되지 않습니다(메시지가 표시되지만). 다른 오류 처리기가 이 예외를 해결하지 않으면 실행이 중지되고 대상이 디버거로 중단됩니다. 이러한 종류의 처리를 두 번째 기회 처리라고 합니다. |
sxn | 출력 (알림) |
이 예외가 발생하면 대상 애플리케이션이 디버거에 전혀 침입하지 않습니다. 그러나 사용자에게 이 예외를 알리는 메시지가 표시됩니다. |
sxi | 무시 | 이 예외가 발생하면 대상 애플리케이션이 디버거에 전혀 침입하지 않고 메시지가 표시되지 않습니다. |
처리 상태 설정할 때 이러한 명령은 다음과 같은 효과를 줍니다.
명령 | 상태 이름 | Description |
---|---|---|
sxe | 처리 | 이벤트는 실행이 다시 시작될 때 처리되는 것으로 간주됩니다. |
sxd,sxn,sxi | 처리되지 않음 | 이벤트는 실행이 다시 시작될 때 처리되지 않는 것으로 간주됩니다. |
이벤트가 아닌 예외와 함께 -h 옵션을 사용할 수 있습니다. ch, bpe 또는 sse와 함께 이 옵션을 사용하여 hc, bpec 또는 ssec에 대한 처리 상태 각각 설정합니다. 다른 이벤트와 함께 -h 옵션을 사용하면 아무런 효과가 없습니다.
hc, bpec 또는 ssec와 함께 -c 또는 -c2 옵션을 사용하여 지정된 명령을 각각 ch, bpe 또는 sse와 연결합니다.
다음 예제에서 sxe 명령은 액세스 위반 이벤트의 중단 상태 첫 번째 기회에 중단되도록 설정하고 해당 지점에서 실행될 첫 번째 기회 명령을 r eax로 설정하는 데 사용됩니다. 그런 다음 sx- 명령을 사용하여 처리 상태 변경하지 않고 첫 번째 명령을 r ebx로 변경합니다. 마지막으로 액세스 위반 이벤트에 대한 현재 설정을 나타내는 sx 출력의 일부가 표시됩니다.
0:000> sxe -c "r eax" av
0:000> sx- -c "r ebx" av
0:000> sx
av - Access violation - break - not handled
Command: "r ebx"
. . .