Udostępnij przez


Obsługiwane typy zdarzeń

Debugowanie programu Visual Studio obsługuje obecnie następujące typy zdarzeń:

  • Zdarzenia asynchroniczne

    Powiadamianie menedżera debugowania sesji (SDM) i środowiska IDE o zmianie stanu debugowanej aplikacji. Te zdarzenia są przetwarzane według dostępności SDM oraz środowiska IDE. Po przetworzeniu zdarzenia żadna odpowiedź nie zostanie wysłana do aparatu debugowania (DE). Interfejsy IDebugOutputStringEvent2 i IDebugMessageEvent2 to przykłady zdarzeń asynchronicznych.

  • Zdarzenia synchroniczne

    Powiadom środowisko IDE i SDM o zmianie stanu debugowanej aplikacji. Jedyną różnicą między tymi zdarzeniami a zdarzeniami asynchronicznymi jest to, że odpowiedź jest wysyłana za pomocą metody ContinueFromSynchronousEvent .

    Wysyłanie zdarzenia synchronicznego jest przydatne, jeśli potrzebujesz, aby DE kontynuował przetwarzanie po odebraniu i przetworzeniu zdarzenia przez środowisko IDE.

  • Zdarzenia synchronicznego zatrzymania lub zdarzenia zatrzymania

    Powiadom sdm i środowisko IDE, że debugowana aplikacja przestała wykonywać kod. Po wysłaniu zdarzenia zatrzymania za pomocą metody Event wymagany jest parametr IDebugThread2 . Zatrzymanie zdarzeń jest kontynuowane przez wywołanie jednej z następujących metod:

    Uwaga / Notatka

    Zdarzenia zatrzymania asynchronicznego nie są obsługiwane. Jest to błąd podczas wysyłania asynchronicznego zdarzenia zatrzymania.

Dyskusja

Rzeczywista implementacja zdarzeń zależy od projektu DE. Typ każdego wysyłanego zdarzenia jest określany przez jego atrybuty, które są ustawiane podczas projektowania DE. Na przykład jedna DE może wysłać zdarzenie IDebugProgramCreateEvent2 jako zdarzenie asynchroniczne, podczas gdy inne DE mogą wysłać je jako zdarzenie zatrzymania.

Poniższa tabela określa, które parametry programu i wątku są wymagane dla zdarzeń, a także typów zdarzeń. Każde zdarzenie może być synchroniczne. Żadne zdarzenie nie musi być synchroniczne.

Uwaga / Notatka

Interfejs IDebugEngine2 jest wymagany dla wszystkich zdarzeń.

Event IDebugProgram2 IDebugThread2 Zatrzymywanie zdarzeń
IDebugActivateDocumentEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugBreakEvent2 Wymagane Wymagane Tak
IDebugBreakpointBoundEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugBreakpointErrorEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugBreakpointUnboundEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugBreakpointEvent2 Wymagane Wymagane Tak
IDebugCanStopEvent2 Wymagane Wymagane Nie.
IDebugDocumentTextEvents2 Niedozwolone Niedozwolone Nie.
IDebugEngineCreateEvent2 Niedozwolone Niedozwolone Nie.
IDebugEntryPointEvent2 Wymagane Wymagane Tak
IDebugErrorEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Może być
IDebugExceptionEvent2 Wymagane Wymagane Tak
IDebugExpressionEvaluationCompleteEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Może być
IDebugInterceptExceptionCompleteEvent2 Wymagane Wymagane Tak
IDebugLoadCompleteEvent2 Wymagane Wymagane Tak
IDebugMessageEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Może być
IDebugModuleLoadEvent2 Wymagane Dozwolone, ale niewymagane Nie.
IDebugOutputStringEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugProgramCreateEvent2 Wymagane Dozwolone, ale niewymagane Nie.
IDebugProgramDestroyEvent2 Wymagane Dozwolone, ale niewymagane Nie.
IDebugPropertyCreateEvent2 Wymagane Dozwolone, ale niewymagane Nie.
IDebugPropertyDestroyEvent2 Wymagane Dozwolone, ale niewymagane Nie.
IDebugReturnValueEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugStopCompleteEvent2 Wymagane Wymagane Tak
IDebugStepCompleteEvent2 Wymagane Wymagane Tak
IDebugSymbolSearchEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.
IDebugThreadCreateEvent2 Wymagane Wymagane Nie.
IDebugThreadDestroyEvent2 Wymagane Wymagane Nie.
IDebugThreadNameChangedEvent2 Dozwolone, ale niewymagane Dozwolone, ale niewymagane Nie.

Zobacz także