2012-05-29 126 views
3

我正在构建在Rexx上的代码分析器上工作。它是一个包含大约5000行代码或更多代码的单个文件脚本。我以前从来没有在Rexx上工作过。除此之外,可读性问题让我的生活更加艰难。所以,如何调试Rexx代码?

是否有任何工具来调试和理解的Rexx代码?

+2

鉴于迈克·考肖制作上可读的Rexx怎么努力,我要问:什么“_readability issue_”你经历?假设你阅读英文,Rexx程序几乎可以完成所说的话。 –

+0

@RossPatterson可读性本身不是w.r.t。它需要做更多的事情,将5000+ loc融入到一个脚本中。 –

+0

根据你的工作对象,我可能会写下这个怪物:-) –

回答

8

使用trace声明?最简单的追踪模式是'A'。这会导致每条指令在执行之前显示。您的指令会显示一个行号和前面的三个字符-,以便您可以在脚本中将其识别为一行。

+2

对,“TRACE”是常用的答案。最特别的是,'TRACE?I',开始了大多数IDE将会描述为单步调试器。当程序暂停并且调试器接管时,可以键入任何Rexx语句,例如'SAY variableICareAbout'或'SomeVar ='一个新值'。 –

2

维基百科有一个pretty good article on Rexx,这应有助于你理解的Rexx语法和程序结构。几乎所有的Rexx书籍都适用于你的环境,因为Rexx是非常跨系统的(类似于年轻的Perl和Python语言)。没有太多的在线书籍,因为几乎所有关于Rexx的文章都是在网络存在之前编写的,但是对于Regina implementation是,这是一个非常好的参考书。

0

在这个问题上的日期是老了,但我会分享我已经找到了谁拉这件事旁边的人很有帮助。 已经提到了TRACE选项。我发现这可以压倒一小部分代码,更不用说5,000行或更多。
以下是我发现有用的一些选项:

  1. 使用“if”仅在某些情况下打开跟踪。
    if counter < 25 then trace "A"
    请务必关闭跟踪了与:
    else trace "OFF"
  2. 使用say其次pull。所说的话会留在屏幕上,直到你进入。
  3. 添加一个子程序:
    AskIt:
    parse pull comment
    say comment
    say 'enter "X" to exit program'
    pull continue
    if Continue \= "X" then return
    exit
    这是调用与call AskIt "In routine that loops, counter=" counter
    ,并会显示:
    In routine that loops counter='##
    enter "X" to exit program
    测试者选择返回通过点击进入或退出程序用X编辑源代码。
    在例行标签后面的行暂时插入return将允许您在不删除所有呼叫的情况下不间断地运行代码。

    我已经写了z/OS的编辑宏其中每次常规标签后插入say *routine name*。它将代码与/* comment */插入一个容易识别的短语,以简化清理。
    这个观众会很少,所以我不会在这里包含代码。

    希望这可以帮助别人。