91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

實現ABAP條件斷點的三種方式分別是什么

發布時間:2021-11-24 17:22:53 來源:億速云 閱讀:169 作者:柒染 欄目:互聯網科技

這篇文章給大家介紹實現ABAP條件斷點的三種方式分別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

ABAP條件斷點這個話題,Jerry的同事曾經問過我,雖然小但很實用。

所謂條件斷點,就是設置在某行語句上的斷點,并不總是會觸發,而是僅當滿足一定條件時才觸發。

條件斷點的使用場合是什么?

舉個簡單的例子,下圖第15行ADD語句設置一個斷點。因為它在一個具有1000行的內表循環體內,所以正常情況下會觸發1000次。

實現ABAP條件斷點的三種方式分別是什么

假設我們在調試一個bug,這個bug當循環到第999次時才出現,那我們前998次的單步調試都是無效的。最高效的做法,就是借助條件斷點的概念,讓斷點在代碼執行到第999次循環時,觸發且僅觸發一次。

小編介紹實現ABAP條件斷點的三種方式。


方法一

給ABAP斷點維護觸發條件

在ABAP調試器里點擊Break/Watchpoints面板,新建一個斷點:

實現ABAP條件斷點的三種方式分別是什么

在Free Condition Entry里維護這個斷點的觸發條件。

回到我上面的例子,我的內表里包含了從1到1000的整數,總共1000條記錄,而我的觸發條件維護為<data> = 22. 顯然,這個斷點在第22次循環時,唯一觸發一次。

實現ABAP條件斷點的三種方式分別是什么

維護完畢后,我們在斷點面板里看到了這個新建的斷點:

實現ABAP條件斷點的三種方式分別是什么

按F8繼續調試,斷點有且僅觸發了一次,此時<data>的值為22,正好符合我們維護的觸發條件,成功。

實現ABAP條件斷點的三種方式分別是什么

方法二

利用ABAP調試器里的觀察點(Watchpoint)


ABAP的調試器,使用方式變化多端。

此處創建Watchpoint:

實現ABAP條件斷點的三種方式分別是什么

我們知道在LOOP循環體內,系統變量sy-tabix會自動賦以當前的循環次數。因此我們在Watchpoint的觸發條件里,維護成sy-tabix = 22, 也可以達到在第22次循環時觸發的目的。

實現ABAP條件斷點的三種方式分別是什么

Watchpoint創建好之后顯示如下:

實現ABAP條件斷點的三種方式分別是什么

按F8繼續調試,程序果然在第22次循環時觸發了:

實現ABAP條件斷點的三種方式分別是什么

并且調試器里彈出一條提示信息:Watchpoint reached

實現ABAP條件斷點的三種方式分別是什么

方法三

ABAP Debugger Script

ABAP Debugger Script這項技術,在SAP研究院內部用的很廣泛。

回到上面的例子,我們將編寫一段簡單的ABAP代碼,去控制目標ABAP代碼的斷點觸發。

在ABAP調試器里,點擊Script標簽頁,創建一個新的ABAP腳本:

實現ABAP條件斷點的三種方式分別是什么

我們想用ABAP腳本監控ABAP代碼里某個簡單變量的值變化,所以使用腳本創建向導里的Variable Value(for Simple Variables):

實現ABAP條件斷點的三種方式分別是什么

這個向導會自動幫我們生成ABAP腳本,其實也就是一段ABAP代碼了,這段代碼可以用編程的方式,在調試器激活的上下文里,獲取某個ABAP變量的值。

下圖腳本的語義很清晰,獲取調試器里field symbol <data>的值,存儲在臨時變量lv_result里。如果該變量的值為22,就調用ABAP腳本的工具方法break,觸發斷點。

實現ABAP條件斷點的三種方式分別是什么

把這段腳本通過上圖的Save As按鈕另存下來,取名ZJERRY_TEST.

然后重新執行我們的測試代碼, 使用Load Script加載剛才保存的ABAP腳本:

實現ABAP條件斷點的三種方式分別是什么

點擊Start Script執行腳本:

實現ABAP條件斷點的三種方式分別是什么

斷點再次如期觸發.

實現ABAP條件斷點的三種方式分別是什么

關于實現ABAP條件斷點的三種方式分別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固镇县| 麻城市| 沙坪坝区| 吉安县| 和政县| 铜梁县| 上虞市| 瑞昌市| 南宁市| 桐柏县| 临朐县| 定日县| 安泽县| 白城市| 松原市| 新源县| 阿尔山市| 肇源县| 宁强县| 大新县| 肥西县| 萝北县| 临高县| 托克托县| 古丈县| 凉城县| 沧州市| 昆明市| 承德市| 高唐县| 玉林市| 岐山县| 宽甸| 安新县| 旬邑县| 延长县| 奎屯市| 喀什市| 潮安县| 大冶市| 绍兴市|