




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上声明:本文档由甄晓达制作,欢迎转载及共享,但请不要用此牟利,譬如设置资源分或者卖钱之类的也欢迎他人修改完善本文档。一、 文档版本记录l 记录文档的版本及修改时间,方便核对同名文档的差异。l 大修改增加大版本号,小修改增加小版本号。时间版本修改人修改内容2016.11.17V1.0甄晓达创建文档二、 基本操作方法及断点简介1. 常用按键l F5:单步执行。逐行执行语句,如果遇到FUNCTION、子程序、方法等代码块时,也会进入到相应代码块内部(注:DEFINE定义的宏命令不会进入!所以不建议在宏命令里写很复杂的语句,否则DEBUG的时候会很麻烦)l F6:当前代码块单步
2、执行。和F5类似,执行每一条语句,但遇到FUNCTION、子程序、方法等其他代码块时会直接执行完毕相应代码块的内容而不是进入到代码块内部。l F7:直接执行完毕当前代码块的所有代码。譬如如果当前在子程序内部,会直接执行完毕该子程序所有代码;如果是在FUNCTION内部,会直接执行完毕FUNTION所有代码。l F8:执行程序。直接运行所有代码。Ø 以上4个按键和下图示中红框的四个按钮分别对应,不过推荐直接使用按键,更方便快捷,但有时某些按键会失效,譬如用QQ远程协助时,此时只能通过点击按钮来跟踪。l SHIFT+F12:直接跳至光标所在行,被跳过的代码不执行;可以往回跳也可以往前跳。
3、(注:不能从LOOP循环外部直接跳入LOOP循环。)Ø 也可以在想跳转的行项目上点“鼠标右键转到语句”来实现此功能,不过仍然推荐使用按键,方便快捷。2. 断点简介1) 断点种类介绍l 会话断点,当前登录账号的本次登录会话有效。Ø 顾名思义,当前账号登录系统并打开的所有(一般最多6个<多余6个会提示不允许新开窗口>)窗口生效;当前账号重复登录系统,在之前登录打开的窗口加的会话断点在本次登录并不生效。l 外部断点,当前登录账号的所有登录会话均有效。Ø 外部断点有时间限制,一般为两个小时。Ø 外部断点对当前账号的所有会话均有效,譬如用加了外部断点的
4、账号在其他机器上登录或者在本机重复登录时也能看到之前加的外部断点。Ø 外部断点在RFC调用时很有用,RFC调用本系统程序时会使用一个公用的账号,使用外部断点可以用任何账号为公用账号打断点,具体方法见后面的内容。l 临时断点,当前跟踪程序生效,当跟踪完毕退出程序后失效。注:会话断点和外部断点只能在DEBUG之前添加,临时断点只能在跟踪的过程中添加。不过这三种断点类型在跟踪时可以相互转化,转化的方式见后面的内容。2) 加断点方式介绍增加断点有两种方式:一是选择想要增加断点的语句行,然后点击工具栏上的断点按钮。此种方法可以添加会话断点以及外部断点。如下图所示:二是直接点击想要增加断点的代码
5、行的最左侧即可。该方法只能增加会话断点。如下图所示:三、 DEBUG界面概览l 此部分为当前程序的主程序名,代码块名,代码位置以及两个简单变量值显示框Ø 简单变量显示框里默认会显示系统字段SY-SUBRC和SY-TABIX的值,可修改成其他简单变量,不能在此处显示表等复杂的变量。 l 模块区。Ø 上图红框为代码模块为标签页中的多个模块之一,每个标签页都有不同的模块。l 标签页,每页具体功能如下:注:桌面1、桌面2、桌面3、Standard标签页类似,放到一起统一说功能(默认使用的Standard标签页)1. Standard标签页。默认代码模块在左,ABAP和屏幕堆栈模块在
6、右上,对象模块在右下显示的标签页,如图:Ø 代码模块,可以看到程序执行的具体代码以及当前执行到了哪一行,可以去掉断点或者添加临时断点(直接点击已有断点可以去掉断点,点击没有断点的代码最左侧可以添加临时断点),可以双击某对象,让对象出现在对象模块里即时的观察该对象值的变化。Ø ABAP和屏幕堆栈模块:这个模块显示了从程序开始运行到当前程序位置经过的所有代码块名称(子程序名、FUNCTION、方法等等),双击某一行可以直接显示调用该行代码块时的相关代码。Ø 对象模块,本模块可以及时的跟踪某个对象值的变化(可以双击代码模块中的对象将对象添加到对象模块,也可以在对象模块里
7、手动输入想要查看的对象名),并可以修改某个对象的值,保存当前跟踪的所有变量,将内表数据下载等等多种操作,可以自己研究下。某些重要功能后面也会有描述。该模块多标签页功能如下(不同的CLIENT拥有的标签页数量可能不一致):u 变量1、变量2标签页。功能一样,可以自由的设置想要跟踪的对象,两个标签页可以分别存放不同的内容。如果有权限,还可以对跟踪对象的值进行修改。u 本地标签页。本标签页显示了当前程序断点位置所有可用的局部对象。u 全局标签页。本标签页显示了当前程序断点位置所有可用的全局对象。注:以上两个标签页在不清楚需要跟踪的对象时会用到,譬如你不知道程序代码当前位置有没有对象存储了你关心的数据
8、,就可以挨个搜索一下这两个标签页的所有对象。u 自动标签页。用途不详,后者补充u 内存分析标签页。可以查看当前程序断点位置某对象占用的内存大小。2. 桌面1,默认代码模块在上,跟踪界面模块在下方式显示的标签页,如图:3. 桌面2,默认代码块在左,ABAP和屏幕堆栈模块在右显示的标签页,如图:4. 桌面3:代码模块在左,对象模块在右显示的标签页。如图:5. Structures:该标签页用于查看某结构的具体字段以及相应的值,也可以通过在对象模块中双击某结构跳到该标签页。6. Tables:该标签页用于查看某内表的具体字段以及相应的值,也可以通过在对象模块中双击某内标跳到该标签页。另外下图箭头指向
9、的功能按键还可以对对内表数据进行增删改查以及下载等一系列辅助功能,就不在此一一介绍了,感兴趣的同事可以实际去点一点。7. Objects:该标签页用于查看类,同样可以通过在对象模块中双击某类进入。8. DetailDisplay:该标签页用于查看某变量或者常亮,同样可以通过在对象模块中点击相应变量常量进入。9. Data Explorer:可以显示各种数据对象。不过因为前面的标签页已经有分别显示各种数据对象的功能,所以该标签页功能不常用。10. Break./Watchpoints:断点管理标签页。该标签页可以对添加的各种断点、监控点进行管理:譬如删除、激活/反激活、切换断点类型、查看断点位置
10、等等。这些功能均有对象的按钮实现,且大都为常见按钮,就不一一分别介绍了,分不清楚的可以把鼠标放到相应按钮上看说明或者点一点看效果11. Diff:用于对比不同的变量的差异,譬如下图比较了内表TABLE第一行和第二行的字段数值差异。当字段较多且差异不大时用此法可以快速的找到差异点。12. Script:没有深入研究该选项卡的功能以及作用,留待后人补充四、 常用跟踪工具方法介绍1. 如何在对象模块查看某内表某行的某个字段?Ø 应用场景:程序里有一个内表有多行数据,一般来说想要查看内表数据需要进入Tables选项卡查看内表具体数值,但内表比较大字段比较多时很麻烦,如何在监控模块里快速查看该
11、内表第3行NAME字段呢?Ø 方法:可以使用如下写法来查看内表第三行的NAME字段值:T_TABLE3-NAME ,如下图所示:2. 为全部某关键字增加断点。Ø 应用场景:某程序调用了生成会计凭证的BAPI,生成会计凭证时有诸多的地点可以做替代和增强。现在运行时报了一个MESSAGE TYPE E类型的错误,需要找到具体的报错地点查询相应的代码做分析。Ø 分析:我们从屏幕返回的数据已经可以知道该错误是通过关键字MESSAGE报出的,但无法准确定位到具体位置。所以我们可以把所有的MESSAGE语句全部加上断点,然后按F8执行,总会找到具体的报错语句。Ø 方
12、法:首先在程序的最开始或者进入调用BAPI时增加断点并执行程序进入到调试界面。按照如下顺序选择顶部菜单栏:断点断点位置语句处断点在弹出的界面里输入想要添加断点的关键字“MESSAGE”回车即可,这样所有的MESSAGE语句均会被增加上临时断点Ø 小提示:已经找到具体的位置想要快速执行完毕程序时,可以在Break./Watchpoints选项卡删除或者反激活该断点。3. 如何使用监控点Ø 应用场景:执行完某代码块以后发现变量G_NUM的值发生了变化,我们想要找到究竟是哪里的代码让G_NUM的值变成了5。Ø 分析:用搜索的方式发现该变量调用的地方非常之多,而且均会修改
13、该字段的值,当然我们可以一步一步跟踪程序或者把所有用到G_NUM的代码行统统加上断点,但如果调用的非常之多亦或是某标准程序的全局标量,该种方法不仅费时费力而且有时调用点多到几乎不可能挨个添加断点,此时就需要用到“监控点”这一工具了。Ø 方法:进入跟踪界面以后点击工具栏的Watchpoint按钮或者在Break./Watchpoints选项卡中的Watchpoints子选项卡中点击新建按钮,在弹出的界面上输入想要监控的变量以及监控条件。然后F8执行程序,当程序执行到监控变量符合设置的监控条件时程序会自动停止。如下图所示:当程序执行的过程中G_NUM变成了5时,程序自动停下Ø
14、小提示:1. 监控点还可以监控表的行数或者使用大于小于号之类,具体查阅监控点界面的提示按钮。2. 有时候我们可能会需要复杂的监控逻辑,譬如监控TABLE-BUKRS = 5000且TABLE-FIELD = 6时的代码位置,这样的话普通的监控逻辑无法实现,因为监控点与监控点之间都是OR的关系,只要符合任意监控点就会停下来。此时我们需要用到旧版本的跟踪工具里的监控点工具。方法:1> 进入跟踪界面以后选择菜单栏的DebuggerSwitch to Classic Debugger进入旧版本跟踪器2> 点击工具栏上的“观察点”按钮设置两个观察点逻辑,分别是T_TABLE-BUKRS =
15、5000 和T_TABLE-FIELD = 6。3> 选择“观察点”选项卡,然后把下边的“观察点间的逻辑操作符”选择“AND”4> 按F8执行程序,当程序执行到T_TABLE-BUKRS = 5000且T_TABLE-FIELD = 6时就会自动停下来。Ø 暂时还没有找出监控内表某行某字段值变更的方法。虽然可以用T_TABLE3-BUKRS这种方法显示这个字段的值,但是无法用于监控。期待找出方法的同事完善该文档。4. 如何查看一个特别长的变量里的值Ø 应用场景:某STRING变量L_STRING里存储内容为/1 /2 /3 /1000,我们双击查看该变量内容时鼠
16、标拖到最后也只能看到/66看不完全,如下图所示:Ø 分析:我们可以更改该字段的视图来找到一个可以查看全部内容的视图。Ø 方法:1. 双击对象模块中的L_STRING字段跳转到Detail Displs.选项卡或者直接点击该选项卡手动输入字段L_STRING2. 点击View下拉菜单选用另外一种现实方式,例如下图中两种视图均可以现实全部内容:5. 如何用自己的账号跟踪外部调用RFC函数?Ø 业务场景:某项目做了大量的RFC接口供外部系统调用,已知外部系统调用时统一采用账号AM_USER登录,现在需要跟踪一下外部传进来的数据。Ø 分析:如果知道AM_USER
17、的登录密码直接登录打外部断点跟踪当然可以,但如果项目管理的比较严不方便给其他人透漏该账号登录密码时怎么办?我们可以用自己的账号来针对AM_USER打外部断点。Ø 方法:进入想要跟踪的RFC函数后,选择顶部菜单“实用程序”“设置”“ABAP编辑器”“调试”,把用户改成AM_USER即可6. 如何快捷获取到传入函数的数据?Ø 业务场景:在截获接口过来的数据,我们想要把接口传过来的数据储存下来以方便我们重复执行验证某些问题;亦或是跟踪程序时到调用某函数时发现该函数出来的结果异常,想要将传入该函数的数据保存下来。Ø 分析:我们当然可以再跟踪界面查看传入的内表数据并挨个粘下来,然后在SE37打开函数手动输入粘贴下来的数值,但是如果字段众多数据量大时该方法耗时耗力,而且容易出错。其实有更简单的方法可以把传入函数的数值作为函数的变式储存下来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论