跌打滚爬中的小菜鸟...
分类:
2012-11-13 18:18:35
原文地址:【LAPTHW】习题 6: 排错 & 调试 作者:pantierui
编译程序的时候总会出现各种错误信息,如何才能快速的解决这些问题那?
我的基本思路是先解决严重度大的,因为有好多严重度低的错误是由高的引起的。
看上面的出错信息,有2个严重度为40的错误,如果能解决掉的话严重度低的一些错误就会随之消失。
一般40的错误多为在你的编译列表中找不到你在程序中声明的文件。上面的就是如此。
我一般的解决思路是先解决40度错误,然后解决*RNF7030的30度错误,然后再解决其他30度错误。
用wrksplf,然后SHIFT + F6找到你刚编译完程序的spooled file(假脱机文件),打开,在Control 处输入B(bottom),然后Page Up,找到我上面贴出来的那部分,然后复制一下40度错误的msg id,这里是*RNF2120,然后粘贴到Find处进行搜索,找到出错的地方。记录下来后,返回到程序进行修改。如此反复直到没有错误为止。
有时候会遇到程序输出和你预想的结果,这个时候我们就需要调试程序了。RPGLE如何调试那??
首先,确保你在编译程序的时候,参数DBGVIEW为*LIST或*SOURCE,本人一般使用*LIST
其次,看看你的程序里是不是含有事务处理(commit/rollback),如果有,在调试之前需要执行命令STRCMTCTL开启事务处理,调试结束后执行命令ENDCMTCTL结束事务处理。
再次,确保想调试的程序的运行时环境(即通常说的库列表LIBL).
最后,执行命令STRDBG开启调试之门。命令STRDBG里有个UPDPROD参数,当我们的程序中含有要更新的文件的时候,要设置UPDPROD为*YES。调试结束的时候要使用命令ENDDBG来结束调试。
执行命令STRDBG并不是直接就开始调试了,执行它是为了设置断点,加载想要调试的module等等。F6设置断点;F14添加要调试的module,还可以用opt 5进入module设置断点等。设置好断点等后按F12退出,然后使用CALL来开始调试,F10是单步走;F12是直接到设定好的断点处;F11查看变量的值。更多信息查看HELP。如图
1. 找一个前面写的程序进行一下排错和调试
2. 研究一下help里的内容