使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈

简介:

今天是农历鼠年大年初四,本文是鼠年第4篇文章,也是汪子熙公众号第203篇原创文章。

大家这几天在家里宅得如何了?貌似不少朋友都闷坏了。



我们继续学习。

Jerry之前的文章 SAP错误消息调试之七种武器:让所有的错误消息都能被定位 介绍的第五种武器孔雀翎SAT,曾经提到了下面这张SAT的截图:

大家最常使用SAT的方式,也就是在上图In Dialog区域里,输入事务码,ABAP报表或者Function Module的名称,然后点击Execute按钮. 如此一来,指定的这些ABAP程序会在SAT Trace模式下运行,自动生成包含了执行性能和调用栈等信息,在程序结束退出Trace模式下之后即可查看。

SAT生成的Trace结果,以树形结构显示ABAP程序执行的每一调用栈和性能数据,无论是进行性能分析,还是学习一段陌生代码的执行逻辑,都非常有用。

那么这里有个问题,如果想跟踪或者想研究的应用,是通过浏览器打开的,例如SAP S/4HANA Fiori应用,SAP ABAP WebDynpro,WebClient UI这种,倘若想研究浏览器里某个应用点了某个按钮之后,背后发生了什么,如何用SAT来跟踪?这也是Jerry的同事过去经常问我的一个问题。

尽管我们可以用SAT界面右部的In Parellel Session来完成,但Jerry觉得其步骤稍嫌繁琐,反正Jerry从来不用,详细步骤在这篇SAP社区博客里有详细介绍:

https://blogs.sap.com/2011/01/18/next-generation-abap-runtime-analysis-sat-how-to-analyze-program-flow/

本文介绍另一种办法,这也是Jerry工作中用的办法。

假设有一个SAP Fiori应用,点了某个按钮后,会触发一个OData服务调用,从ABAP Netweaver服务器上取数据。我已经在Chrome开发者工具里把这个OData服务的url抄了下来,维护在Postman里,随时可以重复调用。

这种方法的思路概括如下:

(1) 在要跟踪的后台代码的起始和结束的位置各打一个断点,假设起始位置断点为1,结束位置为2.
(2) 在浏览器或者其他工具里启动应用,触发断点1,此时在调试器里开启SAT的Trace模式。
(3) 调试器里直接按F8,程序会执行到断点2然后停下来。此时在调试器里关闭SAT的Trace模式。
(4) 结束程序的执行,回到SAT,查看Trace结果。

这种方法的关键在于找准断点1和断点2的位置。如果是跟踪自己熟悉的应用,找准位置不难;如果跟踪的应用自己不熟悉,那么就在框架开始执行和结束的位置各设置一个断点就好了。

还是以上面的OData服务为例,因为抄下来的url片段包含了/sap/opu/odata/sap, 这起始已经告诉了我们在哪里设置断点。

打开事务码SICF,输入OData然后查询,在结果列表里双击OData节点:

凡是浏览器里从ABAP Netweaver后台发起的HTTP调用,只要url包含/sap/opu/odata, 必定会被SICF事务码里odata这个节点分配的ABAP Handler类处理。

双击进入这个类的HANDLE_REQUEST方法,在其方法开始的位置设置断点1,在这个方法的最后一行设置断点2.

现在打开浏览器或者执行Postman以触发断点1,在调试器里点击New Tool按钮,

在弹出窗口里,点击Special Tools里的Trace按钮,

双击这个图标,开启SAT的跟踪模式:

Status栏看到绿灯,说明当前已经在Trace模式了:

F8执行到第二个断点,双击下图蓝色区域的图标以关闭SAT跟踪模式。关闭后,Status栏的绿灯变红,同时TraceFile里出现一个卷轴图标,提示我们SAT跟踪文件已经生成了。

打开SAT事务码,看到这个成功生成的结果文件。

树形结构的调用栈,每个栈的执行性能清晰地罗列出来。

大家可以把这种方法和Jerry在文章开头提到的博客里介绍的另一种办法做比较,看自己更喜欢哪一种。

感谢阅读,祝大家在家中宅得愉快。

更多阅读

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章
|
5月前
|
Web App开发 小程序 前端开发
【产品上新】小程序新内核来了!提升安卓浏览器性能,支持WebRTC
【产品上新】小程序新内核来了!提升安卓浏览器性能,支持WebRTC
101 10
|
5月前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
|
5月前
|
XML 存储 数据格式
SAP UI5 控件 customData 属性的应用介绍
SAP UI5 控件 customData 属性的应用介绍
|
2月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
14天前
|
监控 安全
公司如何监控员工电脑:WebAssembly 语言的浏览器端探索
在数字化办公环境中,公司可能需要对员工电脑进行监控以确保信息安全和工作效率。WebAssembly 作为一种高性能的二进制指令格式,可在浏览器端实现复杂监控功能,如获取浏览器信息和监测网络活动,无需安装额外软件,降低了系统侵入性。然而,公司在实施监控时需遵守法律法规和道德规范,确保员工隐私得到保护,并明确告知监控目的与范围。
41 3
|
2月前
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
16 0
|
4月前
|
机器学习/深度学习 人工智能 前端开发
WebAssembly:浏览器中的新语言,引领Web性能革命
【6月更文挑战第12天】WebAssembly,简称Wasm,是浏览器中的新语言,旨在带来近乎原生的性能,引领Web性能革命。它具有高效、可移植、安全和多语言支持的特点,适用于游戏开发、图形处理、计算机视觉等领域。随着浏览器支持增强,Wasm将在跨平台应用、AI、机器学习、云计算和边缘计算中发挥更大作用,推动Web应用的发展。
|
5月前
|
存储 人工智能 应用服务中间件
Web应用是一种通过互联网浏览器和网络技术在互联网上执行任务的计算机程序
【5月更文挑战第30天】Web应用是一种通过互联网浏览器和网络技术在互联网上执行任务的计算机程序
60 2
|
4月前
|
数据采集 运维 安全
指纹浏览器与虚拟机的区别及在跨境电商中的应用
指纹浏览器与虚拟机在跨境电商中扮演不同角色。指纹浏览器通过独特设备指纹防止账号关联,适合多账号安全管理;虚拟机提供隔离环境,用于测试和开发,但需更多资源和技术管理。商家应根据需求平衡安全、效率与成本。
|
5月前
|
Web App开发 前端开发 JavaScript
构建跨浏览器兼容的前端应用:技术实践与挑战
【5月更文挑战第16天】构建跨浏览器兼容的前端应用是应对浏览器差异和多样性的挑战。使用现代框架(如React、Vue)能自动转换代码,编写可移植的Web标准代码,结合浏览器兼容性测试工具和Polyfill解决旧浏览器支持问题。关注浏览器更新,应对性能、API差异和样式问题,采用渐进增强、条件判断和CSS Reset策略确保应用在各种浏览器上运行良好。
下一篇
无影云桌面