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 metody 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 w przypadku kontynuowania poza pasmem zdarzenia.
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 wyjątek 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 w żądaniu kontynuacji i automatycznie czyści poza pasmem punkty przerwania i wyjątki jednoetapowe. Zdarzenia poza pasmem mogą pojawić się w dowolnym momencie, nawet jeśli debugowana aplikacja zostanie zatrzymana i gdy istnieje już wyjątkowe zdarzenie w pasmie.
W .NET Framework wersji 2.0 debuger powinien natychmiast przechodzić poza pasmem zdarzenia punktu przerwania. 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ć elementu ICorDebugProcess::ClearCurrentException
, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext ani żadnego innego członka interfejsu API debugowania.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorDebug.idl, CorDebug.h
Biblioteki: CorGuids.lib
wersje .NET Framework: dostępne od wersji 1.0