IDataModelScriptDebugStackFrame::GetTransition 方法 (dbgmodel.h)

如果给定的堆栈帧是 IsTransition 方法确定的转换点(请参阅该位置的转换点定义的文档),则 GetTransition 方法返回有关转换的信息。 具体而言,此方法返回上一个脚本,即调用由包含此 IDataModelScriptDebugStackFrame的堆栈段表示的脚本。

除了返回前一个脚本的 IDataModelScript 接口之外,此调用还需尝试确定转换是否连续。 连续转换是一个脚本/提供程序直接调用另一个脚本(忽略任何代理/存根代码,以促进脚本上下文之间的通信)。 非连续转换是中间代码(本机或无法检测到的另一个脚本/提供程序)介于两者之间。

连续转换堆栈的示例(其中所有属性都是同一对象的扩展):

  • [Script1] get firstProperty() { return 42; }
  • (封送或代理/存根代码从 Script2 转换为 Script1)
  • [Script2] get secondProperty() { return this.firstProperty(; }

一个非连续转换堆栈(其中所有属性都是同一对象的扩展)的示例,我们想象两个不同的脚本提供程序-一个 JavaScript 和一个 Python:

  • (JavaScript)[Script1] get firstProperty() { return 42; }
  • (封送或代理/存根代码,以便从 IntermediateScript 转换为 Script1)
  • (Python)[IntermediateScript get intermediateProperty() { return this.firstProperty; }
  • (封送或代理/存根代码,以便从 Script2 转换到 IntermediateScript
  • (JavaScript)[Script2] get secondProperty() { return this.intermediateProperty; }

在第二种情况下,想象中的 JavaScript 调试器的调试器可能会看到 get firstProperty 并获取 secondProperty,而无法了解获取 intermediateProperty,因为它是一个完全不同的脚本提供程序(此处想象的 Python)。 脚本调试器可能在 GetTransition 方法中指示转换是从 Script1 到 Script2 作为非连续转换。

如果整个调试接口能够将想象的 Python 部分的信息拼凑在一起,它将这样做。 想象中的 JavaScript 提供程序只是表示不连续。

语法

HRESULT GetTransition(
  IDataModelScript **transitionScript,
  bool             *isTransitionContiguous
);

参数

transitionScript

调试器在此处返回以前的脚本。 上一个脚本是在包含此 IDataModelStackDebugFrame 的堆栈段所表示的脚本中调用的脚本。

isTransitionContiguous

此处是否返回了转换是否连续的指示。

返回值

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

要求

要求 价值
标头 dbgmodel.h

另请参阅

IDataModelScriptDebugStackFrame 接口