使用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在文章開頭提到的博客里介紹的另一種辦法做比較,看自己更喜歡哪一種。
感謝閱讀,祝大家在家中宅得愉快。
更多閱讀
-
Jerry的ABAP, Java和JavaScript亂燉
-
ABAP開發人員未來應該學些什么
-
Jerry 2017年的五一小長假:8種經典排序算法的ABAP實現
-
Jerry的ABAP原創技術文章合集
-
300行ABAP代碼實現一個最簡單的區塊鏈原型
-
使用Java+SAP云平臺+SAP Cloud Connector調用ABAP On-Premise系統里的函數
-
在SAP云平臺的CloudFoundry環境下消費ABAP On-Premise OData服務
-
ABAP vs Java, 蛙泳 vs 自由泳
-
聊聊C語言和ABAP
-
動手使用ABAP Channel開發一些小工具,提升日常工作效率
-
我用ABAP做過的那些無聊的事情
-
不喜歡SAP GUI?那試試用Eclipse進行ABAP開發吧
-
使用Visual Studio Code編寫和激活ABAP代碼
-
你的ABAP程序給佛祖開過光么?來試試Jerry這個小技巧
-
在SAP云平臺ABAP編程環境上編寫第一段ABAP程序
-
SAP官方發布的ABAP編程規范
-
ABAP Code Inspector那些隱藏的功能,您都知道嗎?
-
還在用ABAP進行SAP產品的二次開發?來了解下這種全新的二次開發理念吧
-
ABAP Netweaver體內的那些寄生式編程語言
-
從SAP社區上的一篇博客開始,聊聊SAP產品命名背后的那份情懷
-
云端的ABAP Restful服務開發
-
如何在SAP云平臺ABAP編程環境里把CDS view暴露成OData服務
-
使用abapGit在ABAP On-Premises系統和SAP云平臺ABAP環境之間進行代碼傳輸
-
30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用
-
Jerry帶您了解Restful ABAP Programming模型系列之二:Action和Validation的實現
-
Jerry帶您了解Restful ABAP Programming模型系列之三:云端ABAP應用調試
-
SAP云平臺上的ABAP編程環境里如何消費第三方服務
-
ABAP開發者上云的時候到了 - 現在大家可以免費使用SAP云平臺ABAP環境的試用版了
-
學而不思則罔 - SAP云平臺ABAP編程環境的由來和適用場景
-
SAP云平臺里的三叉戟應用
-
如何基于Restful ABAP Programming模型開發并部署一個支持增刪改查的Fiori應用
-
SAP 2019 TechEd Key Note解讀:云時代下SAP從業人員如何做二次開發?
-
有哪些ABAP關鍵字和語法,到了ABAP云環境上就沒辦法用了?
-
ABAP開發環境終于支持以駝峰命名法自動格式化ABAP變量名了
-
利用ABAP 740的新關鍵字REDUCE完成一個實際工作任務
-
一段讓人瑟瑟發抖的ABAP代碼
-
昨日萬圣節ABAP怪獸級代碼謎團,公布答案啦
-
介紹一種在ABAP內核態進行內表高效拷貝的方法
-
使用SAP Cloud Application Programming模型開發OData的一個實際例子
-
當ABAP遇見普羅米修斯
-
使用ABAP繪制可伸縮矢量圖
-
ABAP開發環境語法高亮的那些事兒
-
SAP錯誤消息調試之七種武器:讓所有的錯誤消息都能被定位
-
使用ABAP操作Excel的幾種方法
-
SAP GUI里的收藏夾事務碼管理工具
-
SAP GUI和Windows注冊表
-
有了Debug權限就能干壞事?小心了,你的一舉一動盡在系統監控中
-
ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX這些東東是什么鬼
-
實現ABAP條件斷點的三種方式
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 米哈游新作《崩坏:星穹铁道》已开启预下载
- 下一篇: 剑与远征索尼娅厉害吗 索尼娅要不要练