返回
技术指南:使用 Caché 命令行调试疯狂的例程(第十六章)
闲谈
2023-10-17 17:30:06
当 Caché 例程因中断命令挂起执行或发生错误而中断时,程序堆栈将保留有关堆栈的信息。当这种情况发生时,该信息的一个简短摘要将显示在终端提示(NAMESPACE >)中。例如,此信息可能采用以下形式:User 5D3 >。
字母代码和它们的含义如下:
字母代码 | 含义 |
---|---|
U | 用户例程 |
C | 用户类方法 |
S | 系统例程 |
E | 系统类方法 |
使用 Quit 1 命令可以展开程序堆栈。以下是有关程序堆栈展开的详细信息:
理解程序堆栈信息
终端提示中显示的程序堆栈信息包括以下内容:
- 字母代码: 标识例程类型(用户或系统)
- 数字: 表示例程的唯一标识符
- 大于号(>): 指示当前执行点
展开程序堆栈
要展开程序堆栈,请使用 Quit 1 命令。这将显示一个列表,其中包含堆栈中所有例程的详细信息,包括:
- 例程名称
- 源文件和行号
- 正在执行的代码
使用 Quit 1 命令
Quit 1 命令用于展开程序堆栈,但它还具有以下附加功能:
- Quit 1 n: 展开堆栈的前 n 个级别
- Quit 1 g: 展开整个堆栈
- Quit 1 u: 展开堆栈的上一个级别
- Quit 1 d: 展开堆栈的下一级
实用示例
假设程序堆栈信息显示如下:
User 5D3>
要展开前 3 个堆栈级别,请使用以下命令:
Quit 1 3
这将显示以下信息:
routine example_routine(687015)
example.cls(15):5
routine _SYSTEM(147907127)
%SYS.Utilities(1000004900):1966
routine __SQL(148201245)
%SYS.SQL.SQL(1000010889):2500
routine __Request(148202170)
%SYS.Request(1000010909):1404
routine __Open(148202337)
%SYS.Stream(1000011077):616
routine __CreateNew(148202445)
%SYS.Stream.Stdio(1000011106):56
由此信息,我们可以了解到该例程是在 example.cls 文件的第 5 行中执行的,正在执行一个 SQL 查询,并且正在尝试打开一个流。
结论
理解程序堆栈信息和使用 Quit 1 命令对于调试 Caché 例程至关重要。通过遵循本指南,您可以有效地解决问题并快速恢复应用程序的运行。