Метод 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.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по