如何调试事务代码内部通过RFC提交到后台执行的程序/函数

简介: 如何调试事务代码内部通过RFC提交到后台执行的程序/函数   http://mp.weixin.qq.com/s?__biz=MjM5OTI2MjgyMA==&mid=2651785818&idx=2&sn=e79d38...

如何调试事务代码内部通过RFC提交到后台执行的程序/函数

 

http://mp.weixin.qq.com/s?__biz=MjM5OTI2MjgyMA==&mid=2651785818&idx=2&sn=e79d38d0dc34688e3eb926c26f59d0dc&chksm=bcc585518bb20c4771d1fbfb3a00547e41921b1c524921a93ad3ac13ab3ff04d97e77558e7da&mpshare=1&scene=5&srcid=121287vtUXgDW1Coc8XJhxp6#rd

 

一些事务代码在内部通过RFC提交一个程序/函数到后台执行,在此场景下,如果想调试那一段程序/函数,一般通用的debug方式往往力不从心,因为点击F5键的话,debugger不会进入,并直接跳到下一行。以下图为例,可执行MRP的函数 MRP_KD_AUFTRAG_RFC 在事务代码VA01通过RFC提交到后台执行,为了查明此函数如何执行MRP, 点击F5键希望进入函数里面的源代码,但是debugger直接跳到函数的下一行代码 endloop,即,无法进入函数MRP_KD_AUFTRAG_RFC



De.ion: http://mmbiz.qpic.cn/mmbiz_png/MyOJCrxcqF0ur7eLPmrOVyffc6kZHeiaIAfG9uiaf1QqkBLKG6be0bjkcfXl8E6OVdCNZ7G4tibeAO5gkibvB2ia3PA/640?wx_fmt=png&wxfrom=5&wx_lazy=1

 

这种情况下,可采取以下方法. (RFC 一般可通过两种方式提交,一种是 queue RFC, 被提交的程序/函数通过事务代码 SMQ1SMQ2顺序执行并且可以在那些事务代码里debug. 另外一种是 transactional RFC,就是我们在此要讨论的)



刚进入debugger后,到下图显示的菜单 (这是新一代debugger)



De.ion: http://mmbiz.qpic.cn/mmbiz_png/MyOJCrxcqF0ur7eLPmrOVyffc6kZHeiaIRxYFwzZibXFxmnzNDq3m947xc4kwTYKgUsSIYIwSZEKsCGBW1TS4BWQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1



在弹出的对话框里选择下图显示的选项后,点击F8键一直执行到结束。



De.ion: http://mmbiz.qpic.cn/mmbiz_png/MyOJCrxcqF0ur7eLPmrOVyffc6kZHeiaI5jia3krEibLtH8N5SMJFFVHdA2CWSUBkge436ialbRU9RwCqtToQ17icHw/640?wx_fmt=png&wxfrom=5&wx_lazy=1

(在前一代debugger, 到菜单'Settings' > 'Display and change all', 选择 'In background task: Do not process'去触发相同功能。 菜单项 'Display and change all' 只有当 debugger 进入到屏幕的PBO Module子程序后才出现)



现在,因为选择了菜单里的上述项目,即使事务代码已经执行完,函数MRP_KD_AUFTRAG_RFC并没有被执行,而是如下图暂挂到事务代码SM58等待用户手动执行并可以在那里debug



De.ion: http://mmbiz.qpic.cn/mmbiz_png/MyOJCrxcqF0ur7eLPmrOVyffc6kZHeiaINwmvWSbwI4tlE4w5fKPfJqYkRm8pKlnXh8INCsmulyxbrh7O3ciaLDw/640?wx_fmt=png&wxfrom=5&wx_lazy=1

用光标选择相关行后,到下图显示的菜单,点击‘Debug LUW’, 就可以debug函数MRP_KD_AUFTRAG_RFC



De.ion: http://mmbiz.qpic.cn/mmbiz_png/MyOJCrxcqF0ur7eLPmrOVyffc6kZHeiaIfknFWicdWmDvkeN572ic9jgqNLKKRa9pVibWc0OaNsaWib5TQuAxXMWadQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1



 

 

 

目录
相关文章
|
6月前
|
Python
【python脚本】执行过程中触发若干次就停止执行脚本的方式
【python脚本】执行过程中触发若干次就停止执行脚本的方式
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
2477 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
|
7月前
|
Go 数据库
sync.Once-保证运行期间的某段代码只会执行一次
sync.Once-保证运行期间的某段代码只会执行一次
41 0
|
6月前
|
Windows
启动(程序还没执行生成dump文件的代码)就崩溃的处理流程
启动(程序还没执行生成dump文件的代码)就崩溃的处理流程
|
测试技术
Loadrunner 运行场景-场景中的全局变量与关联结果参数
Loadrunner 运行场景-场景中的全局变量与关联结果参数
88 0
【C#】【ffmpeg】外部调用线程执行ffmepg读取返回的信息乱码问题
【C#】【ffmpeg】外部调用线程执行ffmepg读取返回的信息乱码问题
141 0
【C#】【ffmpeg】外部调用线程执行ffmepg读取返回的信息乱码问题
|
C语言
【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 主函数逻辑结构 | 启动无限循环 | 接收用户操作值 | 宏定义 | 显示操作菜单 )
【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 主函数逻辑结构 | 启动无限循环 | 接收用户操作值 | 宏定义 | 显示操作菜单 )
121 0
|
Linux Android开发
【Android 逆向】代码调试器开发 ( 代码调试器功能简介 | 设置断点 | 读写内存 | 读写寄存器 | 恢复运行 | Attach 进程 )
【Android 逆向】代码调试器开发 ( 代码调试器功能简介 | 设置断点 | 读写内存 | 读写寄存器 | 恢复运行 | Attach 进程 )
175 0
|
安全 Unix Linux
第二十章--程序的执行
        尽管把一组指令装入内存并让CPU执行看起来并不是什么大问题,但内核还必须灵活处理以下几个方面的问题:         不同的可执行文件格式:         共享库:很多可执行文件并不包含执行程序所需的所有代码,而是期望内核在运行时从共享库中加载函数。
1170 0

热门文章

最新文章