Метод 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