文档库 最新最全的文档下载
当前位置:文档库 › tiptop程序如何debugger(简版,仅以查询为例)

tiptop程序如何debugger(简版,仅以查询为例)

TIPTOP 程序如何debugger(简版)

本文档以(TIPTOP GP3.0)为例

1.如果要debugger一个程序可以先打开p_zz看看里面的维护信息

(包括模组、是否需要参数等)。本文档以aqct001(IQC 质量记录维护作业)为例做简单介绍:

模组信息

此处可以看见程序在运行的时候需要

添加参数执行,那么我们在debugger

的时候也同时需要传入参数执行。

2.回到tiptop后台界面,根据上图里面的模组信息,我们可以直接

直接跳到cqc/4gl 目录下如图:

3. 在此路径下输入命令r.d2+ aqct001 1 (注:1为参数设定即p_zz里面unix运行指令里面维护的)如下图:

输入命令之后敲击回车,见证奇迹的时刻到了,屏幕里就会跳出debugger界面如下图所示:

4. 因为大多含参数运行的程序都是几个作业通过传入不同参数来显示不同的作业,这个debugger界面可以单纯的理解为一个只有一个main()函数的接收参数的程序,

那么我们注意代码行50:CLOSE WINDOW t001_w #结束画面不难理解如果我们程序执行到这里的时候就会关闭画面,所以我们需要在代码行49: CALL t001(p_argv1,"") #FUN-5C0114

这里双击鼠标左键设置一个断点.如下图(被标记断点那段代码开头会出现一个中原一点红):

5. 到这步我们就需要了解下debugger菜单中的按钮的用法了,因为是简版,我就罗列几个简单按钮的用法吧,我也不截图,直接文字说

明:

Find :配上它那性感的望远镜图标,地球人都知道知道这是查找。Restart :重新开始,用于我们在调试程序的时候发生异常的时候(例如:不注意跳过了我们需要调试的方法),点击这个按钮根据提示就可以重新回到初始界面。

Run/Cont :这个按钮就是直接运行了. 一般在我们打好了断点以后,可以直接点击这个按钮,可以节约很多时间,也避免了只能单步调试的繁琐。

Step Into :以及英文尝试我们就可以大概猜想到了,对没错, 它的用途就是跳入到程序中所包含的function()里面。当然如果你能结合断点来使用就更给力了。

Step Over 根据这个图标就是不进入方法体咯,也就是所谓的单步调试,一个比较长的方法,然后需要单步调试的话那是灰常蛋疼的。

Step Out :这个图标咯就是跳出方法体咯,就像某些门户一样,不会让你只进不出的,关键是配合。

好了,就介绍这么几个吧,相信大家也对这几个按钮有了较为深刻的认识,对于我们任何的一个程序,只要配合这几个按钮使用,随意进出都不是问题。那下面接着调试我们的程序咯,上面我们讲到打断点了,也就是代码行:

49 CALL t001(p_argv1,"") #FUN-5C0114

OK!现在我们果断点击Run/Cont,我们会惊喜的发现黄色的小箭头

飞一般的跑到了中原一点红的位置,如下图:

6. 好了,到这步我们就需要开始进入主程序了,就需要点击菜单里面的Step Into 按钮,奇迹再次发生如下图:

这就是我们debugger 传入的参数‘1’

所噶,经过一系列折腾,我们终于进入到了主程序之中。

7. 到这里如果我们清晰的理解4GL代码里面各个函数的关系,就可以果断在代码:

127 CALL t001_menu()

这句上面双击鼠标左键,再次添加一个中原一点红,果断点击Run/Cont按钮,如下图:

那么不清楚的童鞋就需要用到Step Over按钮了, 一步步的接近我们的目的地127 CALL t001_menu(),单步调试时千万得注意的不要走过了,所谓欲速则不达哦,走过了就需要重新调试。

8.然后点击按钮Step Into,menu()函数是一个程序的重点内

容哦,里面包含了系统标准的按钮(如录入,查询,单身)和我们客制在右边的一些按钮的定义,以及它们所调用的方法,

进去之后就会显示下图:

9.然后单步到CALL t001_bp("G"),不了解的童鞋可以Step Into进

去看下,里面是画面档定义的array的display以及画面中action 按钮的定义。我们这里就忽略了,直接F10,也就是Step Over 。

奇迹又一次发生,界面出来了。如下图:

询为例子,简单图列+文字说明下:

在画面上点击查询按钮之后,画面会自动切换为我们的调试界面,了解各个函数的同学可以果断在的在代码行301 CALL t001_q() 双击鼠标左键,再制造一个中原一点红。然后直接Run/Cont ,到了中原一点红的位置,再Step Into 结果如下图所示:

不难发现我们已经进入了q()函数了,接下来要进入的就是我们的cs()函数和fetch()函数了,方法同上一步,去call cs()函数和call fetch()函数的地方分别搞中原一点红,(run/cont+step into )配合使用先进入我们的cs()函数吧,结果如下图:

其中代码的意思我就不多说了,大家都懂滴。这是一个简单的双档作业,所以必须有两个CONSTRUCT ON ,前面为单头的,后面一个则为单身的。现在我们就暂时就按F10(Step Over),单步到Construct On 的时候会跳出程序界面,也就是要我们填写栏位的值,这个填写的值

即为我们的查询条件,如下图:

现在我们可以输入值,也可以不用输入,我这里输入一个检验日期吧,然后点击作业中的确定按扭,继续回到调试界面继续F10到第二

个construct on 也就是单身的,如下图

()结束,如下图:

这时候又可以看到我们当时设定的另一个中原一点红,

果断Run+Step Into 进入fetch()函数这个方法体,进入fecth()函数以后我们只需要找一个方法体,那就是show()函数了,方法不多说了,直接进入,进入之后我们最好是单步咯,这里面也包含了两个内容,一个是对单头的数组进行填充+display,另一个就是利用b_fill()方法对单身的数组也进行填充+display,之所以要单步,是为了检查我们的栏位是否有书写正确,单步运行到b_bill()之后同样给一个中原一点红,然后进入,如下图:

然后继续F10,单步将这个方法走完咯,同样的也是用来检查栏位书写,写错或者写漏之类的,如下图:

这里还有一个小窍门,如果单身里面比数太多,它会循环,我在调试的时候也很讨厌这种循环的,特别是循环里面有问题的情况,这里我们不需要检查循环,就直接到end foreach的下一句那给个中原一点红直接run/cont 然后单步将这个方法跑完之后,就会再次回到我们

的show()函数里,如下图所示:

来,最终显示

那么有关查询的调试方法到这就结束了。其实不难发现,只要我们熟悉4gl中方法的走向,对调试代码来说是很有帮助的。因为是简版,就先写到这里吧,另外还有在调试过程中传入值的方法等,以后再补充吧,我擦,都下班40分钟了,这个简单的说明文档终于写好了。希望对大家有帮助!有写的不好,或者写错的地方还请高手多指教! Thanks!

Condor

2012年2月13日18:42:59

相关文档