调试 debug
调试是任何编程语言的重要特性。 它可以帮助开发人员诊断错误,找到根本原因,然后相应地解决它们。 在Rexx中,跟踪实用程序用于调试。 跟踪指令可以通过两种方式实现,一种是批处理模式,另一种是交互模式。 我们来看看如何实现这两个选项。
以批处理模式跟踪
trace命令用于给出执行的每个Rexx命令的详细级别。
trace语句的一般语法如下所示 -
语法 (Syntax)
trace [setting]
设置可以是以下任何选项 -
A - 跟踪所有命令。
C - 仅跟踪发送到操作系统的主机命令。
E - 仅跟踪发送到操作系统的导致错误的主机命令。
F - 仅跟踪发送到操作系统的导致失败的主机命令。
I - 这提供了Rexx命令的中间级跟踪。
L - 如果要在跟踪发生时标记跟踪,则此选项。
N - 这是默认选项,不会发生跟踪。
我们来看一下trace命令的一个例子。
例子 (Example)
/* Main program */
trace A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
上述计划的输出如下 -
5 *-* n = 100.45 if datatype( n, wholenumber ) then signal msg
7 *-* say 'This is a whole number
This is a whole number
8 *-* return 0
从输出中,您可以看到附加跟踪已添加到程序的输出中。 关于输出可以注意以下事项 -
行号和执行的语句将添加到跟踪输出中。
执行的每一行都显示在跟踪输出中。
跟踪功能
也可以在跟踪功能的帮助下启用跟踪。 一般语法和示例如下所示。
语法 (Syntax)
trace()
上述函数返回当前跟踪级别。
参数 (Parameters)
没有
返回值 (Return Value)
上面的函数给出了当前的跟踪级别。
例子 (Example)
/* Main program */
say trace()
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then signal msg
say 'This is a whole number'
return 0
msg :
say 'This is an incorrect number '
上述程序的输出如下。
N
This is an incorrect number
N的第一行表示跟踪设置为Normal。
设置跟踪值
可以使用跟踪功能设置跟踪级别。 一般语法和示例如下所示。
语法 (Syntax)
trace(travel_level)
参数 (Parameters)
trace_level - 这类似于可用于设置跟踪级别的选项。
返回值 (Return Value)
上面的函数给出了当前的跟踪级别。
例子 (Example)
/* Main program */
say trace()
current_trace = trace('A')
say current_trace
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg say 'This is a whole number'
return 0
msg :
say ' This is an incorrect number '
上述计划的输出如下 -
N
4 *-* say current_trace
N
6 *-* n = 100.45
7 *-* if\datatype( n, wholenumber ) then
8 *-* signal msg
12 *-* say 'This is an incorrect number'
'This is an incorrect number'
互动追踪
交互式跟踪是其中,跟踪是在程序运行时执行的。 就像在Visual Studio for .Net等IDE中一样,您可以在其中添加断点并查看每个语句的执行方式,同样在这里您也可以看到每个代码行运行时的程序。
一般语法如下 -
语法 (Syntax)
trace ?options
其中,trace命令的选项相同,如下所示。
A - 跟踪所有命令
C - 仅跟踪发送到操作系统的主机命令。
E - 仅跟踪发送到操作系统的导致错误的主机命令。
F - 仅跟踪发送到操作系统的导致失败的主机命令。
I - 这提供了Rexx命令的中间级跟踪。
L - 如果要在跟踪发生时标记跟踪,则此选项。
N - 这是默认选项,不会发生跟踪。
我们来看一个实现主动跟踪的示例。
例子 (Example)
/* Main program */
trace ?A
/* Main program */
n = 100.45 if datatype( n, wholenumber ) then
signal msg
say 'This is a whole number'
return 0
msg : say 'This is an incorrect number'
上述程序的输出将如以下程序所示。 跟踪将在每行代码处停止; 然后你需要按Enter按钮移动到下一行代码。
This is an incorrect number
+++ "LINUX COMMAND /home/cg/root/5798511/main.rex"
5 *-* n = 100.45 if datatype( n, wholenumber ) then
+++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++
6 *-* signal msg
10 *-* msg :
10 *-* say 'This is an incorrect number'