小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

實現(xiàn)ABAP條件斷點的三種方式

 汪子熙 2020-01-27

本文是鼠年第3篇文章,也是汪子熙公眾號第202篇原創(chuàng)文章。

今天是大年初三,Jerry祝大家霍去病,辛棄疾,健健康康,長命百歲。

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

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

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

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

假設(shè)我們在調(diào)試一個bug,這個bug當循環(huán)到第999次時才出現(xiàn),那我們前998次的單步調(diào)試都是無效的。最高效的做法,就是借助條件斷點的概念,讓斷點在代碼執(zhí)行到第999次循環(huán)時,觸發(fā)且僅觸發(fā)一次。

本文介紹實現(xiàn)ABAP條件斷點的三種方式。也歡迎大家分享自己最喜歡用的且本文尚未提到的條件斷點技術(shù)。

為了方便記憶,Jerry用天下會雄霸幫主的三種絕技來給這三種條件斷點的實現(xiàn)方式命名。

方法一

天霜拳 - 給ABAP斷點維護觸發(fā)條件

天霜拳,冰系技能,雄霸傳予大弟子秦霜。

天霜拳在馬榮成的《風云》漫畫里一共出現(xiàn)了14式:

  • 風霜撲面

  • 霜寒抱月

  • 霜結(jié)中霄

  • 霜雪紛飛

  • 霜冷長河

  • 霜痕累累

  • 霜凝見拙

  • 披霜撥露

  • 霜雪冰山

  • 傲雪凌霜:這是天霜拳的絕招,也是最為強勁的一招。一招四式(傲立孤峰、雪嶺尋梅、凌云壓頂、霜河倒影),寒氣彌漫,四下五丈之內(nèi)都被凍成冰霜。 

大師兄啊,在《風云》里是個杯具人物,唉。

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

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

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

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

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

方法二 

排云掌 - 利用ABAP調(diào)試器里的觀察點(Watchpoint)

小的時候看漫畫,覺得不哭死神步驚云簡直是一個bug般的存在,會的技能之多令人發(fā)指。

?

僅《風云》第一部里,步驚云就掌握了霍家劍法,悲痛莫名,排云掌,圣靈劍法,麒麟臂,三霸劍等等。Jerry個人認為塑造得最成功出彩的,還要算那十二式變化莫測,名稱飄逸的排云掌:

  • 行云流水

  • 披云戴月

  • 翻云覆雨

  • 排云倒海

  • 烏云蔽日

  • 重云深鎖

  • 撕天排云

  • 云海波濤

  • 燮云無定

  • 殃云天降

  • 愁云慘淡

ABAP的調(diào)試器,也和步驚云的排云掌一樣,使用方式變化多端。

此處創(chuàng)建Watchpoint:

我們知道在LOOP循環(huán)體內(nèi),系統(tǒng)變量sy-tabix會自動賦以當前的循環(huán)次數(shù)。因此我們在Watchpoint的觸發(fā)條件里,維護成sy-tabix = 22, 也可以達到在第22次循環(huán)時觸發(fā)的目的。

Watchpoint創(chuàng)建好之后顯示如下:

按F8繼續(xù)調(diào)試,程序果然在第22次循環(huán)時觸發(fā)了:

并且調(diào)試器里彈出一條提示信息:Watchpoint reached

方法三

風神腿 - ABAP Debugger Script

天下武功,唯快不破。

擁有一頭飄逸長發(fā)的聶風,施展起六式風神腿來,如暴風驟雨,摧枯拉朽, 真可配得上“風中之神”的稱號。

  • 捕風捉影

  • 風中勁草

  • 暴雨狂風

  • 雷厲風行

  • 風卷樓殘

  • 神風怒嚎

ABAP Debugger Script這項技術(shù),在SAP研究院內(nèi)部用的很廣泛。

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

在ABAP調(diào)試器里,點擊Script標簽頁,創(chuàng)建一個新的ABAP腳本:

我們想用ABAP腳本監(jiān)控ABAP代碼里某個簡單變量的值變化,所以使用腳本創(chuàng)建向?qū)Ю锏腣ariable Value(for Simple Variables):

這個向?qū)詣訋臀覀兩葾BAP腳本,其實也就是一段ABAP代碼了,這段代碼可以用編程的方式,在調(diào)試器激活的上下文里,獲取某個ABAP變量的值。

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

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

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

點擊Start Script執(zhí)行腳本:

斷點再次如期觸發(fā).

希望大家能靈活運用這三種ABAP條件斷點的實現(xiàn)方式, 將它們?nèi)跁炌ā?/span>《風云》中的雄霸, 將天霜拳,排云掌和風神腿融為一體, 自創(chuàng)了三分歸元氣這項神技。Jerry也祝愿大家早日煉成屬于自己開發(fā)領(lǐng)域的三分歸元氣。感謝閱讀。

更多閱讀

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多