Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
-
Interfejsy IDebugBreakpointEvent2 i IDebugExceptionEvent2 to przykłady zatrzymywania zdarzeń.
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. |