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 |