Freigeben über


Unterstützte Typen von Ereignissen

Das Debuggen von Visual Studio unterstützt derzeit die folgenden Ereignistypen:

  • Asynchrone Ereignisse

    Benachrichtigen Sie den Sitzungsdebug-Manager (SDM) und die IDE, dass sich der Zustand der zu debuggenden Anwendung ändert. Diese Ereignisse werden nach Belieben des SDM und der IDE verarbeitet. Nach der Verarbeitung des Ereignisses wird keine Antwort an das Debugmodul (DE) gesendet. Die IDebugOutputStringEvent2 - und IDebugMessageEvent2-Schnittstellen sind Beispiele für asynchrone Ereignisse.

  • Synchrone Ereignisse

    Benachrichtigen Sie das SDM und die IDE, dass sich der Zustand der zu debuggenden Anwendung ändert. Der einzige Unterschied zwischen diesen Ereignissen und asynchronen Ereignissen besteht darin, dass eine Antwort mithilfe der ContinueFromSynchronousEvent-Methode gesendet wird.

    Das Senden eines synchronen Ereignisses ist nützlich, wenn Ihre DE die Verarbeitung fortsetzen muss, nachdem die IDE das Ereignis empfängt und verarbeitet hat.

  • Synchrones Beenden von Ereignissen oder Beenden von Ereignissen

    Benachrichtigen Sie das SDM und die IDE, dass die debuggierte Anwendung den Code nicht mehr ausführt. Wenn Sie ein Stoppereignis mithilfe des Methodenereignisses senden, ist der Parameter "IDebugThread2 " erforderlich. Das Beenden von Ereignissen wird durch einen Aufruf der folgenden Methoden fortgesetzt:

    Hinweis

    Asynchrone Beendigungsereignisse werden nicht unterstützt. Es ist ein Fehler, ein asynchrones Stoppereignis zu senden.

Diskussion (Discussion)

Die tatsächliche Implementierung von Ereignissen hängt vom Entwurf Ihrer DE ab. Der Typ jedes gesendeten Ereignisses wird durch seine Attribute bestimmt, die beim Entwerfen der DE festgelegt werden. Beispielsweise kann eine DE ein IDebugProgramCreateEvent2 als asynchrones Ereignis senden, während ein anderer es als Stoppereignis senden kann.

In der folgenden Tabelle wird angegeben, welche Programm- und Threadparameter für welche Ereignisse sowie Ereignistypen erforderlich sind. Jedes Ereignis kann synchron sein. Kein Ereignis muss synchron sein.

Hinweis

Die IDebugEngine2-Schnittstelle ist für alle Ereignisse erforderlich.

Event IDebugProgram2 IDebugThread2 Stoppen von Ereignissen
IDebugActivateDocumentEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugBreakEvent2 Erforderlich Erforderlich Yes
IDebugBreakpointBoundEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugBreakpointErrorEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugBreakpointUnboundEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugBreakpointEvent2 Erforderlich Erforderlich Yes
IDebugCanStopEvent2 Erforderlich Erforderlich Nein
IDebugDocumentTextEvents2 Nicht zulässig Nicht zulässig Nein
IDebugEngineCreateEvent2 Nicht zulässig Nicht zulässig Nein
IDebugEntryPointEvent2 Erforderlich Erforderlich Yes
IDebugErrorEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Kann sein
IDebugExceptionEvent2 Erforderlich Erforderlich Yes
IDebugExpressionEvaluationCompleteEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Kann sein
IDebugInterceptExceptionCompleteEvent2 Erforderlich Erforderlich Yes
IDebugLoadCompleteEvent2 Erforderlich Erforderlich Yes
IDebugMessageEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Kann sein
IDebugModuleLoadEvent2 Erforderlich Zulässig, aber nicht erforderlich Nein
IDebugOutputStringEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugProgramCreateEvent2 Erforderlich Zulässig, aber nicht erforderlich Nein
IDebugProgramDestroyEvent2 Erforderlich Zulässig, aber nicht erforderlich Nein
IDebugPropertyCreateEvent2 Erforderlich Zulässig, aber nicht erforderlich Nein
IDebugPropertyDestroyEvent2 Erforderlich Zulässig, aber nicht erforderlich Nein
IDebugReturnValueEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugStopCompleteEvent2 Erforderlich Erforderlich Yes
IDebugStepCompleteEvent2 Erforderlich Erforderlich Yes
IDebugSymbolSearchEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein
IDebugThreadCreateEvent2 Erforderlich Erforderlich Nein
IDebugThreadDestroyEvent2 Erforderlich Erforderlich Nein
IDebugThreadNameChangedEvent2 Zulässig, aber nicht erforderlich Zulässig, aber nicht erforderlich Nein

Siehe auch