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 |