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程序在运行过程中的错误。
|