作者:Colin Nicholls
发布时间:1999.05
翻译:
deepl https://www.deepl.com/translator
格式整理:xinjie
—————————————————
调用堆栈(Call Stack)窗口
从 "工具 "菜单中选择 "调用堆栈";或者使用命令 ACTIVATE WINDOW CALL;或者,如果调试工具栏可见,按下 "调用堆栈 "复选按钮,即可显示 "调用堆栈 "窗口:
不难理解,调用堆栈窗口显示的是当前过程/方法的调用堆栈。下面是调用堆栈窗口的两个视图:
左侧显示的是您正在执行的程序:这里我们正在执行名为 DEBUGME.PRG 的程序的 GetText() 过程。
右边显示的是程序尚未运行或被取消时的信息。这里显示的信息似乎有点错误,因为实际上 SET TRBETWEEN 在这两种情况下都是关闭的,但调用堆栈显然是可用的。
当你重新启动程序时,这就更有意义了(但意义不大)。如果 "在断点间跟踪 "处于关闭状态,那么程序虽然在运行,但调用堆栈并没有发生动态变化,而是出现了右上图所示的信息。如果开启 "在断点间跟踪",程序运行速度会慢很多,但可以看到调用堆栈随着程序运行而变化。
提示:如果您当前处于暂停状态,而跟踪窗口恰好也是打开的,那么在调用堆栈窗口中选择不同行将会更新跟踪窗口,显示所选过程/方法的代码。这对于以下情况非常有用:根据从当前跟踪中获得的信息,在继续运行之前,您想回顾调用堆栈,并针对当前行下一或两级过程的代码行设置新的断点。
调用堆栈窗口的右键菜单有三个特定于上下文的项目:顺序位置、当前过程和调用堆栈指示器。
本图显示了一个示例,我们在应用程序的初始化例程中悬浮了 7 层。序号位置指示器是一列数字,显示了我们所处的深度。黄色箭头表示当前过程,黑色三角形表示所选过程级别(如果可见,则显示在跟踪窗口中)。
在研究调用堆栈窗口之前,我甚至不知道它有 "顺序位置 "显示功能,因此我无法举出一个实际例子来说明它何时有用。