다음을 통해 공유


ICorDebugUnmanagedCallback::DebugEvent 메서드

네이티브 이벤트가 발생했음을 디버거에 알릴 수 있습니다.

구문

HRESULT DebugEvent (
    [in] LPDEBUG_EVENT  pDebugEvent,
    [in] BOOL           fOutOfBand
);

매개 변수

pDebugEvent [in] 네이티브 이벤트에 대한 포인터입니다.

fOutOfBand[in] true- 관리되지 않는 이벤트가 발생한 후 관리되는 프로세스 상태와의 상호 작용이 불가능한 경우 디버거가 ICorDebugController::Continue를 호출할 때까지, 그렇지 않으면 false.

설명

디버그 중인 스레드가 Win32 스레드인 경우 Win32 디버깅 인터페이스의 멤버를 사용하지 마세요. Win32 스레드에서만 호출할 수 있으며 대역 외 이벤트를 계속 진행하는 경우에만 호출 ICorDebugController::Continue 할 수 있습니다.

콜백은 DebugEvent 콜백에 대한 표준 규칙을 따르지 않습니다. 호출 DebugEvent할 때 프로세스는 원시 OS 디버그 중지된 상태가 됩니다. 프로세스가 동기화되지 않습니다. 관리 코드에 대한 정보 요청을 충족하는 데 필요한 경우 동기화된 상태가 자동으로 입력되며, 이로 인해 다른 중첩된 DebugEvent 콜백이 발생할 수 있습니다.

프로세스를 계속하기 전에 예외 이벤트를 무시하도록 프로세스에서 ICorDebugProcess::ClearCurrentException을 호출합니다. 이 메서드를 호출하면 계속 요청에서 DBG_EXCEPTION_NOT_HANDLED 대신 DBG_CONTINUE 보내고 대역 외 중단점 및 단일 단계 예외를 자동으로 지웁니다. 디버그 중인 애플리케이션이 중지된 것으로 나타나고 처리 중인 대역 내 이벤트가 이미 있는 경우에도 대역 외 이벤트는 언제든지 발생할 수 있습니다.

.NET Framework 버전 2.0에서 디버거는 대역 외 중단점 이벤트를 바로 지나야 합니다. 디버거는 ICorDebugProcess2::SetUnmanagedBreakpoint 및 ICorDebugProcess2::ClearUnmanagedBreakpoint 메서드를 사용하여 중단점을 추가하고 제거해야 합니다. 이러한 메서드는 대역 외 중단점을 자동으로 건너뜁니다. 따라서 디스패치되는 유일한 대역 외 중단점은 Win32 DebugBreak 함수 호출과 같이 명령 스트림에 이미 있는 원시 중단점이어야 합니다. ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext 또는 디버깅 API다른 멤버를 사용하지 ICorDebugProcess::ClearCurrentException마세요.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 1.0부터 사용 가능

참고 항목