关于Debug[转]

今看到一位前辈关于debug的文章,蛮好。今年的TechEd上也有专门的讲解debug新功能(http://www.sapteched.com/china/10/cn/activities/home.asp?id=6&action=).

突然发觉自己手头上有一份很早以前总结的关于debug的东东,很简单的。修改修改,趁工作间隙,也马马虎虎放在本博里面吧,记录记录,以防遗忘。

另外,debug是一个非常重要也非常有”技术含量”的活儿。懂得实在是太少,还得继续努力学习。

1. 静态menu/button设置debug: 用户相关

如今的系统(因为debug是与系统有关的),屏幕上可以有两种类型的debug mode:

148

当然,这两个break-point都是用户相关的,也就是说不同的用户是不会相互影响的。

(1)Set/Delete session break-point

前一种:同一个logon session,也就是说,在同一个登录session中,它的状态是保持着的。如下:

先设置一个session break-point:

设置break-point:

193

然后再打开另一个session,同样看该program:

发现该break-point仍然存在。

202

如果再重新登录,再打开该program

可以发现,break-point不见了。

2112

(2)Set/Delete External break-point

后一种:不同的logon session,范围大于(包括)前一种。

先设置一个session break-point:

设置break-point:

2211

然后再打开另一个session,同样看该program:

发现该两个break-point仍然存在。

238

如果再重新登录,再打开该program

可以发现,只有external 的break-point存在了。

242

2. Coding中设置debug:用户无关与用户相关

这里仅记录两个break-point以及break <User>:

(1)Break-Point:用户无关

Break-point:是与用户无关。

如在程序中定义:

88

然后,执行会进入debug。

如果再换一个用户(非当前的用户),同样会进入到debug中去。

(2)Break <userID>:用户相关

Break <userID>:是与用户相关。

如在程序中定义:

95

然后,执行会进入debug。

如果再换一个用户(非当前的用户),则不会进入到debug中去。

3. Debug中操作
(1)设置Watch Point

在Debug中设置watch point主要是为了在debug中有条件地去执行程序,类似于在程序中设置了一道“门槛”,程序运行至此则停下来。

在程序中,在最初的时候设置了进入debug如下:

104

这里,为了测试简便设置watch point在sy-subrc为14。如下:

1114

设置watch point:

1213

然后,在watch poing list中可以查看到:

1311

这里可以修改、删除等等。

然后在debug中,可以F8等,一直运行到sy-subrc = 14后的操作地方。如下,当按下F8后,停在了sy-subrc为14的地方:

149

(2)更改内表等选项

在Debug中,这一块是使用最多的地方了,无论是修改参数还是变量,还是内表。如对参数或者变量的修改,只需要双击更改便是。这里记录下修改内表的debug内容,使用其右边的tool:

154

可以的操作有:

164

(3)Go to statement的应用

在Debug中,经常会出现,已经跑到后面去了,但又想看一下前面的过程是怎么跑的。当然重新打开跑一下debug是Ok的,但重新跑debug比较费时费力。

例如现在debug已经跑到第74行:

174

但假设,想看它如何跑第45行的FM:

将光标置于45行,选择:

184

就Ok了.

(但是注意:对于已经在后面修改过的值/变量等,此时是不会还原回来的).

4. Debug附加

关于debug还有很多的选项。Debug是一项非常有意思有意义的工具。

(1)Debug调试数据库操作程序

也就是Debug状态下,自动commit work(隐式地进行DB commit,就类似于如果我们不加上commit work语句,当程序结束后,check数据库仍然已改变)。

但是,如果是update FM或者perfrom on commit的情况,并不会自动commit work(这种情况下需要执行commit work语句)

(2)WebDynpro的Debug

通过上面第一部分,可以知道,调试WD需要用external break-point.

posted @ 2010-12-24 15:20  Kaming's SAP  阅读(259)  评论(0编辑  收藏  举报