ICorDebugUnmanagedCallback::DebugEvent — Metoda
Powiadamia debuger o tym, że zdarzenie natywne zostało wyzwolone.
Składnia
HRESULT DebugEvent (
[in] LPDEBUG_EVENT pDebugEvent,
[in] BOOL fOutOfBand
);
Parametry
pDebugEvent
[in] Wskaźnik do zdarzenia natywnego.
fOutOfBand
[in] true
, jeśli interakcja ze stanem zarządzanego procesu jest niemożliwa po wystąpieniu niezarządzanego zdarzenia, dopóki debuger nie wywoła elementu ICorDebugController::Continue; w przeciwnym razie false
.
Uwagi
Jeśli debugowany wątek jest wątkiem Win32, nie używaj żadnych elementów członkowskich interfejsu debugowania Win32. Można wywołać ICorDebugController::Continue
tylko w wątku Win32 i tylko wtedy, gdy przechodzisz obok zdarzenia poza pasmem.
Wywołanie DebugEvent
zwrotne nie jest zgodne ze standardowymi regułami wywołań zwrotnych. Po wywołaniu DebugEvent
metody proces będzie mieć stan nieprzetworzonego debugowania systemu operacyjnego. Proces nie zostanie zsynchronizowany. Spowoduje to automatyczne wprowadzenie zsynchronizowanego stanu w razie potrzeby w celu spełnienia żądań dotyczących kodu zarządzanego, co może spowodować powstanie innych zagnieżdżonych DebugEvent
wywołań zwrotnych.
Wywołaj metodę ICorDebugProcess::ClearCurrentException w procesie, aby zignorować zdarzenie wyjątku przed kontynuowaniem procesu. Wywołanie tej metody wysyła DBG_CONTINUE zamiast DBG_EXCEPTION_NOT_HANDLED na żądanie kontynuacji i automatycznie czyści punkty przerwania poza pasmem i wyjątki jednoetapowe. Zdarzenia poza pasmem mogą pojawić się w dowolnym momencie, nawet gdy debugowana aplikacja zostanie zatrzymana, a gdy istnieje już wybitne zdarzenie w pasmie.
W programie .NET Framework w wersji 2.0 debuger powinien natychmiast przechodzić obok zdarzenia punktu przerwania poza pasmem. Debuger powinien używać metod ICorDebugProcess2::SetUnmanagedBreakpoint i ICorDebugProcess2::ClearUnmanagedBreakpoint w celu dodawania i usuwania punktów przerwania. Te metody automatycznie pomijają wszystkie punkty przerwania poza pasmem. W związku z tym jedynymi punktami przerwania poza pasmem, które są wysyłane, powinny być nieprzetworzone punkty przerwania, które znajdują się już w strumieniu instrukcji, takie jak wywołanie funkcji Win32 DebugBreak
. Nie próbuj używać metody ICorDebugProcess::ClearCurrentException
ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext ani żadnego innego członka interfejsu API debugowania.
Wymagania
Platformy: zobacz Wymagania systemowe.
Nagłówek: CorDebug.idl, CorDebug.h
Biblioteka: CorGuids.lib
Wersje programu .NET Framework: dostępne od wersji 1.0