Udostępnij za pośrednictwem


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 DebugEventmetody 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::ClearCurrentExceptionICorDebugProcess::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

Zobacz też