如果给定的堆栈帧是 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 |