📅  最后修改于: 2020-11-02 04:04:40             🧑  作者: Mango
调试是任何编程语言中的重要功能。它可以帮助开发人员诊断错误,找到根本原因,然后相应地解决它们。在Rexx中,跟踪实用程序用于调试。跟踪指令可以通过两种方式实现,一种是批处理模式,另一种是交互模式。让我们看看如何实现这两个选项。
trace命令用于给出每个执行的Rexx命令的详细级别。
trace语句的一般语法如下所示-
trace [setting]
设置可以是以下任一选项-
A-跟踪所有命令。
C-仅跟踪发送到操作系统的主机命令。
E-仅跟踪导致错误的发送到操作系统的主机命令。
F-仅跟踪导致失败的发送到操作系统的主机命令。
I-这提供了Rexx命令的中间级别跟踪。
L-如果您要在跟踪发生时标记它,则此选项。
N-这是默认选项,其中不进行任何跟踪。
让我们看一下trace命令的示例。
/* 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
从输出中,您可以看到在程序的输出中添加了其他跟踪。关于输出,需要注意以下几点:
行号和执行的语句一起添加到跟踪输出中。
跟踪输出中显示了要执行的每一行。
还可以借助跟踪函数启用跟踪。常规语法和示例如下所示。
trace()
上面的函数返回当前跟踪级别。
没有
上面的函数给出了当前的跟踪级别。
/* 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的第一行表示将迹线设置为“正常”。
可以使用跟踪函数设置跟踪级别。常规语法和示例如下所示。
trace(travel_level)
trace_level-这类似于用于设置跟踪级别的选项。
上面的函数给出了当前的跟踪级别。
/* 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中一样,您可以在其中添加断点并查看每个语句的执行方式,类似地,在这里您还可以在每个代码行运行时看到该程序。
通用语法如下-
trace ?options
其中,trace命令的选项相同,如下所示。
A-跟踪所有命令
C-仅跟踪发送到操作系统的主机命令。
E –仅跟踪导致错误的发送到操作系统的主机命令。
F-仅跟踪导致失败的发送到操作系统的主机命令。
I-这提供了Rexx命令的中间级别跟踪。
L-此选项是如果您想在跟踪发生时对其进行标记。
N-这是默认选项,其中不进行任何跟踪。
让我们看一下实现主动跟踪的示例。
/* 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'