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 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 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 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

Zobacz też