内容提要 :
AS/400 中的 ILE RPG 提供 DEBUGER 工具来调试 RPG 程序,本文主要描述 DEBUGER 工具的使用。
说明 :
ILE RPG 的 DEBUGER 工具可以用来发现程序运行时的错误,它主要能实现:
与 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 一个程序的过程
例如:
CRTBNDRPG PGM(MYLIB/DEBUGEX) SRCFILE(XQLIB/QRPGLESRC)
TEXT( ’ ILE RPG/400 program DEBUGEX ’ )
DBGVIEW(*SOURCE)
这里的 DBGVIEW 有很多参数可以选,它被用来决定可以显示那些程序源代码, DEGVIEW 的所有可选参数含义
如下:
*STMT —允许用编译清单在语句处显示变量值、设置断点,此时,不显示源语句。
*SOURCE —建立与输入的源语句相同的显示。
*COPY —建一个源语句显示并且包括带有 /COPY 成员的源语句的显示。
*LIST —建立与编译清单相同的显示。
*ALL —建立以上所有类型的显示。
*NONE —不产生调试数据。
STRDBG PGM(MYLIB/DEBUGEX)... UPDPRD(NO/YES)
参数 UPDPRD 用来控制 DEBUGER 是否可以修改数据库中的表。
CALL PGM(XQLIB/DEBUGEX)
如下图所示:
Display Module Source
Program: DEBUGEX Library: XQLIB Module: DEBUGEX
130 129 *
131 130 C*EXEC SQL
132 131 C* PREPARE sel FROM :select2
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
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 程序在运行过程中的错误。
参考资料 :
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论