乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       汪子熙 2020-01-27

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

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

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

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

      條件斷點(diǎn)的使用場(chǎng)合是什么?

      舉個(gè)簡(jiǎn)單的例子,下圖第15行ADD語(yǔ)句設(shè)置一個(gè)斷點(diǎn)。因?yàn)樗谝粋€(gè)具有1000行的內(nèi)表循環(huán)體內(nèi),所以正常情況下會(huì)觸發(fā)1000次。

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

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

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

      方法一

      天霜拳 - 給ABAP斷點(diǎn)維護(hù)觸發(fā)條件

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

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

      • 風(fēng)霜撲面

      • 霜寒抱月

      • 霜結(jié)中霄

      • 霜雪紛飛

      • 霜冷長(zhǎng)河

      • 霜痕累累

      • 霜凝見拙

      • 披霜撥露

      • 霜雪冰山

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

      大師兄啊,在《風(fēng)云》里是個(gè)杯具人物,唉。

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

      在Free Condition Entry里維護(hù)這個(gè)斷點(diǎn)的觸發(fā)條件。

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

      維護(hù)完畢后,我們?cè)跀帱c(diǎn)面板里看到了這個(gè)新建的斷點(diǎn):

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

      方法二 

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

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

      ?

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

      • 行云流水

      • 披云戴月

      • 翻云覆雨

      • 排云倒海

      • 烏云蔽日

      • 重云深鎖

      • 撕天排云

      • 云海波濤

      • 燮云無定

      • 殃云天降

      • 愁云慘淡

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

      此處創(chuàng)建Watchpoint:

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

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

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

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

      方法三

      風(fēng)神腿 - ABAP Debugger Script

      天下武功,唯快不破。

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

      • 捕風(fēng)捉影

      • 風(fēng)中勁草

      • 暴雨狂風(fēng)

      • 雷厲風(fēng)行

      • 風(fēng)卷樓殘

      • 神風(fēng)怒嚎

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

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

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

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

      這個(gè)向?qū)?huì)自動(dòng)幫我們生成ABAP腳本,其實(shí)也就是一段ABAP代碼了,這段代碼可以用編程的方式,在調(diào)試器激活的上下文里,獲取某個(gè)ABAP變量的值。

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

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

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

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

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

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

      更多閱讀

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多