zoukankan      html  css  js  c++  java
  • 如何DEBUG一个ILERPG程序

    AS/400中的ILE RPG提供DEBUGER工具来调试RPG程序,本文主要描述DEBUGER工具的使用。

    ILE RPG的DEBUGER工具可以用来发现程序运行时的错误,它主要能实现:
    1.通过光标位置设置断点。
    2.单步执行。
    3.显示/修改程序中的变量。
    4.显示或修改字段、数据结构和数组的值给出字段、表达式。

    与DEBUGER相关的调试命令如下:

    命令 描述
    ATTR 显示一个变量的属性。这些属性是记录在调试符号表中的变量的大小和类型。
    BREAK 在被测试程序的某个位置上输入一个条件断点或非条件断点。使用“BREAK 行号WHEN 表达式 ”来输入一个条件断点。
    CLEAR 清除条件断点和非条件断点。
    DISPLAY

    显示用EQUATE命令分配的名字和字义,同时允许显示与当前画面显示模块源码屏幕上的源程序不同的模块,这个部分模块目标必须存在于当前程序目标中。
    EQUATE 允许分配一个表达式、变量或调试命令的速记名。
    EVAL 显示或修改变量的值,或者显示表达式、记 录、数据结构或数组的值。
    QUAL 定义出现在“EVAL”命令后面变量的范围。这个命令只用于带局部变量的语言。例如ILE C/400,ILE RPG/400不用它。
    STEP 运行被调试程序的一个或多个语句。
    FIND 在当前显示的模块向前或向后检索一个指定的行号或字符或文本。
    UP 把源码显示窗口往前移到以输入数为开始行的那一屏。
    DOWN 把源码显示窗口往前移到以输入数为末尾行的那一屏显示。
    LEFT 使源码显示窗口左移。
    RIGHT 向右移动源码显示窗口,移动的列数是你输入的字符数。
    TOP 窗口定位在从第一行显示。
    BOTTOM 窗口定位在最后一行。
    NEXT 窗口定位到(以当前显示为基准的)下一个断点那一屏显示。
    PREVIOUS 定位窗口到(以当前显示为基准的)前一个断点那一屏显示。
    HELP 对可用的源码调试命令显示联机帮助信息。

    表一

    DEBUG一个程序的过程
    1.用CRTBNDRPG或CRTRPGMOD命令编译源程序。
    例如:
    CRTBNDRPG PGM(MYLIB/DEBUGEX) SRCFILE(MYLIB/QRPGLESRC)
    TEXT(’ILE RPG/400 program DEBUGEX’)
    DBGVIEW(*SOURCE)
    这里的DBGVIEW有很多参数可以选,它被用来决定可以显示哪些程序源代码,DEGVIEW的所有可选参数含义
    如下:
    *STMT —允许用编译清单在语句处显示变量值、设置断点,此时,不显示源语句。
    *SOURCE—建立与输入的源语句相同的显示。
    *COPY —建一个源语句显示并且包括带有/COPY成员的源语句的显示。
    *LIST —建立与编译清单相同的显示。
    *ALL —建立以上所有类型的显示。
    *NONE —不产生调试数据。

    2.用命令STRDBG启动DEBUGER.
    STRDBG PGM(MYLIB/DEBUGEX)... UPDPRD(*NO/*YES)
    参数UPDPRD用来控制DEBUGER是否可以修改数据库中的表。

     

    3.调用被调试的程序
    CALL PGM(MYLIB/DEBUGEX)
    如下图所示:
    Display Module Source

    Program: DEBUGEX Library: MYLIB Module: DEBUGEX
    130 129 *
    131 130 C*EXEC SQL
    132 131 C* PREPARE sel FROM :selct2
    133 132 C*END-EXEC
    134 133 C Z-ADD 3 SQLER6
    135 134 C CALL 'QSQROUTE'
    136 135 C PARM SQLCA
    137 136 C PARM SELCT2
    138 137 *
    139 138 * Declare the SQL cursor to hold the data retrieved from th
    140 139 C*EXEC SQL
    141 140 C* DECLARE MYCSR SCROLL CURSOR FOR SEL
    142 141 C*END-EXEC
    143 142 *
    144 143 * Open the SQL cursor.
    More...
    Debug . . .

    F3=End program F6=Add/Clear breakpoint F10=Step F11=Display variable
    F12=Resume F17=Watch variable F18=Work with watch F24=More keys

    可以在DEBUG画面输入表一中的命令进行调试:
    例如:
    a)查看某个变量的值
    EVAL SQLER6
    SQLER6 = 000000003.
    EVAL也可以修改某个变量的值
    例如: EVAL SQL346=6, 再用EVAL查看结果
    EVAL SQLER6
    SQLER6 = 000000006.


    b)设置断点
    BREAK 135 ->在第135行上设置断点。
    BREAK 135 WHEN *IN02=’1’ ->当02指示器为‘1’时,在第135行上设置断点。

    c)单步或多步执行
    step ->单步执行
    step 10 ->一次执行十步
    step into ->进入某个被调用程序
    step over ->一步执行完成

    d)查看某个字段的属性
    ATTR SQLER6
    结果是:TYPE = BINARY, LENGTH = 4 BYTES
    其它的调试命令很简单就不多讲了,大家可以在实际工作中去尝试。

    4.停止DEBUG.

    经过以上四步,可以查找ILE RPG程序在运行过程中的错误。

  • 相关阅读:
    此刻,很想那些老朋友
    985工程介绍
    211工程介绍
    蓝牙耳机声音断断续续
    不支持用淋浴洗澡
    在HY买饭
    成长路上的六个W
    屎、洗脚水
    Ubuntu更换软件源
    视频流媒体服务器RTMP和RTSP区别是什么?如何区分?
  • 原文地址:https://www.cnblogs.com/etsdpt/p/2316864.html
Copyright © 2011-2022 走看看