Метод ICorDebugUnmanagedCallback::DebugEvent

Уведомляет отладчик о том, что сработало собственное событие.

Синтаксис

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

Параметры

pDebugEvent
[in] Указатель на собственное событие.

fOutOfBand
[in] true, если взаимодействие с состоянием управляемого процесса невозможно после неуправляемого события, пока отладчик не вызовет ICorDebugController::Continue; в противном случае — значение false.

Комментарии

Если отлаживаемый поток является потоком Win32, не используйте элементы интерфейса отладки Win32. Вы можете вызывать ICorDebugController::Continue только в потоке Win32 и только при продолжении внеполосного события.

Обратный DebugEvent вызов не соответствует стандартным правилам для обратных вызовов. При вызове DebugEventпроцесс будет находиться в необработанном состоянии, отладочная ОС остановлена. Процесс не будет синхронизирован. Он автоматически перейдет в синхронизированное состояние, когда это необходимо для удовлетворения запросов на получение сведений об управляемом коде, что может привести к другим вложенным DebugEvent обратным вызовам.

Вызовите ICorDebugProcess::ClearCurrentException в процессе, чтобы игнорировать событие исключения перед продолжением процесса. Вызов этого метода отправляет DBG_CONTINUE вместо DBG_EXCEPTION_NOT_HANDLED в запросе на продолжение и автоматически очищает точки останова и одношаговые исключения. Внеполосные события могут возникать в любое время, даже если отлаживаемое приложение появляется остановленным и когда уже существует выдающееся событие в канале.

В платформа .NET Framework версии 2.0 отладчик должен немедленно продолжить работу после события точки останова вне диапазона. Отладчик должен использовать методы ICorDebugProcess2::SetUnmanagedBreakpoint и ICorDebugProcess2::ClearUnmanagedBreakpoint для добавления и удаления точек останова. Эти методы автоматически пропускают все внеполосные точки останова. Таким образом, единственными точками останова, которые отправляются вне канала, должны быть необработанные точки останова, которые уже находятся в потоке инструкций, например вызов функции Win32 DebugBreak . Не пытайтесь использовать ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext или любой другой член API отладки.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorDebug.idl, CorDebug.h

Библиотека: CorGuids.lib

платформа .NET Framework версии: доступно с версии 1.0.

См. также раздел