Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
-
Die Schnittstellen IDebugBreakpointEvent2 und IDebugExceptionEvent2 sind Beispiele für das Beenden von Ereignissen.
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 |