Поделиться через


Метод 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::ClearCurrentExceptionICorDebugProcess ::GetThreadContext, ICorDebugProcess::SetThreadContext или любой другой член API отладки.

Требования

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

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

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

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

См. также