Rexx - 调试



调试是任何编程语言中的重要功能。它帮助开发人员诊断错误,找到根本原因,然后相应地解决问题。在 Rexx 中,trace 实用程序用于调试。trace 指令可以通过两种方式实现,一种是批处理模式,另一种是交互模式。让我们看看如何实现这两个选项。

批处理模式下的 Trace

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 函数

也可以通过 trace 函数启用 Trace。下面显示了一般语法和示例。

语法

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 值

可以使用 trace 函数设置追踪级别。下面显示了一般语法和示例。

语法

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' 

交互式追踪

交互式追踪是指在程序运行时进行追踪。就像在 .Net 的 Visual Studio 等 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'
广告