ICorDebugUnmanagedCallback::DebugEvent 메서드

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

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

매개 변수

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

  • fOutOfBand
    [in] 관리되는 프로세스 상태와의 상호 작용이 디버거에서 ICorDebugController::Continue를 호출할 때까지 관리되지 않는 이벤트가 발생한 후 유지되지 않으면 true이고, 그렇지 않으면 false입니다.

설명

디버깅되는 스레드가 Win32 스레드인 경우에는 Win32 디버깅 인터페이스의 멤버를 사용하지 마십시오. ICorDebugController::Continue는 Win32 스레드에서와 out-of-band 이벤트를 지나서 계속하는 경우에만 호출할 수 있습니다.

DebugEvent 콜백은 콜백의 표준 규칙을 따르지 않습니다. DebugEvent를 호출한 경우 프로세서는 OS 디버그가 중단된 원시 상태에 있습니다. 프로세스는 동기화되지 않습니다. 관리 코드에 대한 정보 요청을 만족시키기 위해 필요한 경우에만 프로세스가 자동으로 동기화된 상태가 되며, 이 경우 다른 DebugEvent 콜백이 중첩될 수 있습니다.

프로세스를 계속하기 전에 예외 이벤트를 무시하려면 프로세스에서 ICorDebugProcess::ClearCurrentException을 호출합니다. 이 메서드를 호출하면 계속 요청에 DBG_EXCEPTION_NOT_HANDLED 대신 DBG_CONTINUE가 보내지고 out-of-band 중단점 및 한 단계씩 실행 예외가 자동으로 지워집니다. out-of-band 이벤트는 디버깅되는 응용 프로그램이 중지된 것으로 나타나고 처리 중인 in-band 이벤트가 이미 있는 경우에도 언제든지 발생할 수 있습니다.

.NET Framework 버전 2.0의 디버거에서는 즉시 out-of-band 중단점 이벤트를 지나서 프로세스를 계속해야 합니다. 디버거에서는 ICorDebugProcess2::SetUnmanagedBreakpointICorDebugProcess2::ClearUnmanagedBreakpoint 메서드를 사용하여 중단점을 추가하고 제거해야 합니다. 이러한 메서드는 out-of-band 중단점을 자동으로 건너뜁니다. 따라서 디스패치된 out-of-band 중단점만 Win32 DebugBreak 함수 호출과 같은 명령 스트림에 이미 있는 원시 중단점이어야 합니다. ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext 또는 디버깅 API의 다른 멤버는 사용하지 마십시오.

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

참고 항목

참조

ICorDebugUnmanagedCallback 인터페이스