IDataModelScriptDebugClient::NotifyDebugEvent-Methode (dbgmodel.h)
Wenn ein Ereignis auftritt, das in den Skriptdebugger einbricht, ruft der Debugcode selbst die Schnittstelle über die NotifyDebugEvent-Methode auf. Diese Methode ist synchron. Die Ausführung des Skripts wird erst fortgesetzt, wenn die Schnittstelle vom Ereignis zurückgibt. Die Definition des Skriptdebuggers soll einfach sein: Es gibt absolut keine geschachtelten Ereignisse, die verarbeitet werden müssen.
Ein Debugereignis wird durch einen Variantendatensatz definiert, der als ScriptDebugEventInformation bezeichnet wird. Welche Felder in den Ereignisinformationen gültig sind, wird größtenteils durch das DebugEvent-Element definiert.
Es definiert die Art des Ereignisses, das aufgetreten ist, wie von einem Member der ScriptDebugEvent-Enumeration beschrieben:
Enumerant | BESCHREIBUNG |
---|---|
ScriptDebugBreakpoint | Gibt an, dass ein Haltepunkt erreicht wurde. Informationen zu dem bestimmten Haltepunkt, der erreicht wurde, sind im BreakpointInformation-Teil der Union enthalten, der Folgendes enthält: • BreakpointId: Der eindeutige Bezeichner für den Breakpoint, der erreicht wurde. |
ScriptDebugStep | Gibt an, dass ein Schrittereignis aufgetreten ist. Es werden keine weiteren Informationen bereitgestellt. |
ScriptDebugException | Gibt an, dass eine Ausnahme aufgetreten ist. Informationen über die jeweilige Ausnahme, die aufgetreten ist, sind in der ExceptionInformaiton-Position der Union enthalten, die Folgendes enthält: • IsUncaught: Gibt an, ob der Haltepunkt eine erste Chance (false) oder eine nicht behandelte Ausnahme (true) ist. Das Datenobjekt für das Ereignis ist das Objekt, das ausgelöst wurde. |
ScriptDebugAsyncBreak | Gibt an, dass eine asynchrone Unterbrechung des Skripts aufgetreten ist. Dies kann auf etwas wie "Break on entry" oder "break on event" zurückzuführen sein. |
Wenn die Schnittstelle entscheidet, wie sie mit dem Debugereignis fortfahren möchte, füllt sie das argument resumeEventKind aus und gibt erfolgreich von der NotifyDebugEvent-Methode zurück. Die Vorgehensweise des Debuggers hängt vom Wert in diesem Feld ab. Es ist ein Mitglied der ScriptExecutionKind-Enumeration, die wie folgt definiert ist:
Enumerant | BESCHREIBUNG |
---|---|
ScriptExecutionNormal | Gibt an, dass das Skript von der Schnittstelle bis zum nächsten Debugereignis normal ausgeführt werden soll. Dies entspricht einem "go"-Befehl in einer Debugger-Benutzeroberfläche. |
ScriptExecutionStepIn | Gibt an, dass die Schnittstelle möchte, dass der Skriptdebugger einschritten und die Schnittstelle benachrichtigt, wenn der Schritt in erfolgreich abgeschlossen wurde. Beachten Sie, dass andere Ereignisse in der Zwischenzeit auftreten können. In diesem Fall gibt es möglicherweise nie eine Schrittbenachrichtigung. |
ScriptDebugStepOut | Gibt an, dass die Schnittstelle den Skriptdebugger ausführen und die Schnittstelle benachrichtigen soll, wenn der Schritt erfolgreich abgeschlossen wurde. Beachten Sie, dass andere Ereignisse in der Zwischenzeit auftreten können. In diesem Fall gibt es möglicherweise nie eine Schrittbenachrichtigung. |
ScriptDebugStepOver | Gibt an, dass die Schnittstelle möchte, dass der Skriptdebugger einen Schritt ausführen und die Schnittstelle benachrichtigen soll, wenn der Schrittvorgang erfolgreich abgeschlossen wurde. Beachten Sie, dass andere Ereignisse in der Zwischenzeit auftreten können. In diesem Fall gibt es möglicherweise nie eine Schrittbenachrichtigung. |
Syntax
HRESULT NotifyDebugEvent(
ScriptDebugEventInformation *pEventInfo,
IDataModelScript *pScript,
IModelObject *pEventDataObject,
ScriptExecutionKind *resumeEventKind
);
Parameter
pEventInfo
Eine Datenstruktur, die angibt, welches Debugereignis gerade aufgetreten ist.
pScript
Das Skript, in dem das Ereignis aufgetreten ist.
pEventDataObject
Das Datenobjekt für das betreffende Ereignis. Wenn das Ereignis kein Datenobjekt aufweist, wird nullptr übergeben. Ein Datenobjekt ist beispielsweise das Ausnahmeobjekt, das für eine Ausnahmebenachrichtigung ausgelöst wurde.
resumeEventKind
Ein Hinweis von der Schnittstelle zum Debugger, wie der Debugger die Ausführung von Skriptcode nach der Verarbeitung des Debugereignisses fortsetzen soll. Dies wird wie oben beschrieben als Member der ScriptExecutionKind-Enumeration zurückgegeben.
Rückgabewert
Diese Methode gibt HRESULT zurück, das den Erfolg oder Fehler angibt.
Anforderungen
Anforderung | Wert |
---|---|
Header | dbgmodel.h |