您好,登錄后才能下訂單哦!
這篇文章給大家介紹實現ABAP條件斷點的三種方式分別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
ABAP條件斷點這個話題,Jerry的同事曾經問過我,雖然小但很實用。
所謂條件斷點,就是設置在某行語句上的斷點,并不總是會觸發,而是僅當滿足一定條件時才觸發。
條件斷點的使用場合是什么?
舉個簡單的例子,下圖第15行ADD語句設置一個斷點。因為它在一個具有1000行的內表循環體內,所以正常情況下會觸發1000次。
假設我們在調試一個bug,這個bug當循環到第999次時才出現,那我們前998次的單步調試都是無效的。最高效的做法,就是借助條件斷點的概念,讓斷點在代碼執行到第999次循環時,觸發且僅觸發一次。
小編介紹實現ABAP條件斷點的三種方式。
在ABAP調試器里點擊Break/Watchpoints面板,新建一個斷點:
在Free Condition Entry里維護這個斷點的觸發條件。
回到我上面的例子,我的內表里包含了從1到1000的整數,總共1000條記錄,而我的觸發條件維護為<data> = 22. 顯然,這個斷點在第22次循環時,唯一觸發一次。
維護完畢后,我們在斷點面板里看到了這個新建的斷點:
按F8繼續調試,斷點有且僅觸發了一次,此時<data>的值為22,正好符合我們維護的觸發條件,成功。
ABAP的調試器,使用方式變化多端。
此處創建Watchpoint:
我們知道在LOOP循環體內,系統變量sy-tabix會自動賦以當前的循環次數。因此我們在Watchpoint的觸發條件里,維護成sy-tabix = 22, 也可以達到在第22次循環時觸發的目的。
Watchpoint創建好之后顯示如下:
按F8繼續調試,程序果然在第22次循環時觸發了:
并且調試器里彈出一條提示信息:Watchpoint reached
ABAP Debugger Script這項技術,在SAP研究院內部用的很廣泛。
回到上面的例子,我們將編寫一段簡單的ABAP代碼,去控制目標ABAP代碼的斷點觸發。
在ABAP調試器里,點擊Script標簽頁,創建一個新的ABAP腳本:
我們想用ABAP腳本監控ABAP代碼里某個簡單變量的值變化,所以使用腳本創建向導里的Variable Value(for Simple Variables):
這個向導會自動幫我們生成ABAP腳本,其實也就是一段ABAP代碼了,這段代碼可以用編程的方式,在調試器激活的上下文里,獲取某個ABAP變量的值。
下圖腳本的語義很清晰,獲取調試器里field symbol <data>的值,存儲在臨時變量lv_result里。如果該變量的值為22,就調用ABAP腳本的工具方法break,觸發斷點。
把這段腳本通過上圖的Save As按鈕另存下來,取名ZJERRY_TEST.
然后重新執行我們的測試代碼, 使用Load Script加載剛才保存的ABAP腳本:
點擊Start Script執行腳本:
斷點再次如期觸發.
關于實現ABAP條件斷點的三種方式分別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。