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 intermediateProperty 的情况下看到 get firstProperty 和获取 secondProperty,因为它是一个完全不同的脚本提供程序, (此处) 想象的 Python 提供程序。 脚本调试器可能会在 GetTransition 方法中指示从 Script1 到 Script2 的转换是非连续转换。

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

语法

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

参数

transitionScript

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

isTransitionContiguous

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

返回值

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

要求

要求
Header dbgmodel.h

另请参阅

IDataModelScriptDebugStackFrame 接口