IDataModelScriptDebugClient::NotifyDebugEvent 方法 (dbgmodel.h)

每当发生任何中断脚本调试器的事件时,调试代码本身会通过 NotifyDebugEvent 方法调用接口。 此方法是同步方法。 在接口从 事件返回之前,不会继续执行脚本。 脚本调试器的定义很简单:绝对没有需要处理的嵌套事件。

调试事件由称为 ScriptDebugEventInformation 的变体记录定义。 事件信息中的哪些字段有效主要由 DebugEvent 成员定义。

它定义由 ScriptDebugEvent 枚举的成员描述的事件类型:

枚举 说明
ScriptDebugBreakpoint 指示命中断点。 有关被命中的特定断点的信息包含在并集的 BreakpointInformation 部分中,其中包含以下内容:• BreakpointId:命中断点的唯一标识符。
ScriptDebugStep 指示发生步骤事件。 未提供进一步的信息。
ScriptDebugException 指示发生了异常。 有关发生的特定异常的信息包含在联合的 ExceptionInformaiton 位置,其中包含以下内容: • IsUncaught:指示断点是否为第一次机会 (false) 或未经处理的异常 (true) 。 事件的数据对象是引发的对象。
ScriptDebugAsyncBreak 指示发生了对脚本的异步中断。 这可能是因为“进入时中断”或“事件中断”

当接口决定如何从调试事件继续时,它将填充 resumeEventKind 参数并从 NotifyDebugEvent 方法成功返回。 调试器如何继续取决于此字段中的值。 它是 ScriptExecutionKind 枚举的成员,定义如下:

枚举 说明
ScriptExecutionNormal 指示接口希望脚本正常执行,直到下一个调试事件。 这相当于调试器 UI 中的“go”命令。
ScriptExecutionStepIn 指示接口希望脚本调试器单步执行并在 中的步骤成功完成时通知接口。 请注意,在此期间可能会发生其他事件。 在这种情况下,可能永远不会有步骤通知。
ScriptDebugStepOut 指示接口希望脚本调试器退出,并在单步执行成功完成时通知接口。 请注意,在此期间可能会发生其他事件。 在这种情况下,可能永远不会有步骤通知。
ScriptDebugStepOver 指示接口希望脚本调试器单步执行,并在单步执行成功完成时通知接口。 请注意,在此期间可能会发生其他事件。 在这种情况下,可能永远不会有步骤通知

语法

HRESULT NotifyDebugEvent(
  ScriptDebugEventInformation *pEventInfo,
  IDataModelScript            *pScript,
  IModelObject                *pEventDataObject,
  ScriptExecutionKind         *resumeEventKind
);

参数

pEventInfo

指示刚刚发生的调试事件的数据结构。

pScript

发生事件的脚本。

pEventDataObject

所讨论事件的数据对象。 如果事件没有数据对象,则传递 nullptr。 例如,数据对象是为异常通知引发的异常对象。

resumeEventKind

从 接口到调试器的指示,指示调试器在处理调试事件后如何继续执行脚本代码。 如上所述,此类作为 ScriptExecutionKind 枚举的成员返回。

返回值

此方法返回指示成功或失败的 HRESULT。

要求

要求
Header dbgmodel.h

另请参阅

IDataModelScriptDebugClient 接口