IDataModelScriptDebugClient::NotifyDebugEvent 方法 (dbgmodel.h)
每当发生任何中断脚本调试器的事件时,调试代码本身就会通过 NotifyDebugEvent 方法调用接口。 此方法是同步的。 在接口从事件返回之前,不会继续执行脚本。 脚本调试器的定义很简单:绝对没有需要处理的嵌套事件。
调试事件由称为 ScriptDebugEventInformation 的变体记录定义。 事件信息中的哪些字段有效主要由 DebugEvent 成员定义。
它定义由 ScriptDebugEvent 枚举的成员描述发生的事件类型:
枚举 | 描述 |
---|---|
ScriptDebugBreakpoint | 指示命中了断点。 有关被命中的特定断点的信息包含在联合的断点Information 部分中,其中包含以下内容: • 断点Id:已命中断点的唯一标识符。 |
ScriptDebugStep | 指示已发生步骤事件。 未提供进一步的信息。 |
ScriptDebugException | 指示发生了异常。 有关发生的特定异常的信息包含在包含以下内容的 Union 的 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。
要求
要求 | 价值 |
---|---|
标头 | dbgmodel.h |