<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          IDEA的5大調(diào)試技巧,你會(huì)廢嗎?

          共 2277字,需瀏覽 5分鐘

           ·

          2021-08-17 04:21

          往期熱門(mén)文章:

          1、基于 SpringBoot + Vue 的前后端分離的考試系統(tǒng)
          2、國(guó)內(nèi)首家!攜程周三、周五可在家“躺平”:76%員工主動(dòng)報(bào)名 !網(wǎng)友:我酸了
          3、MySQL 大批量插入,如何過(guò)濾掉重復(fù)數(shù)據(jù)?
          4、Spring官方為什么建議構(gòu)造器注入?
          5、字節(jié)教育大裁員:有員工賠了一套首付款!

          來(lái)源微信公眾號(hào):JAVA日知錄
          在項(xiàng)目開(kāi)發(fā)的時(shí)候我發(fā)現(xiàn)很多小伙伴能非常熟練的使用IDEA編寫(xiě)代碼,但是對(duì)于IDEA調(diào)試的技巧掌握的不是很好,只會(huì)F7、F8、F9等這些基本調(diào)試功能。
          而像一些復(fù)雜的調(diào)試場(chǎng)景就無(wú)從下手,如:在for循環(huán)中調(diào)試某個(gè)特定值;多線(xiàn)程、Reactor調(diào)試;修改變量的運(yùn)行值等。
          下面我們就來(lái)分場(chǎng)景介紹一下IDEA的調(diào)試技巧,看完掌握后調(diào)試bug的效率一定大大提升。

          1. 條件斷點(diǎn)

          循環(huán)中經(jīng)常用到這個(gè)技巧,比如:遍歷1個(gè)大List的過(guò)程中,想讓斷點(diǎn)停在某個(gè)特定值。
          條件斷點(diǎn)
          參考上圖,在斷點(diǎn)的位置,右擊斷點(diǎn)旁邊的小紅點(diǎn),會(huì)出來(lái)一個(gè)界面,在Condition這里填入斷點(diǎn)條件即可,這樣調(diào)試時(shí),就會(huì)自動(dòng)停在i=10的位置。
          條件斷點(diǎn)調(diào)試

          2. 回到"上一步"

          該技巧最適合特別復(fù)雜的方法套方法的場(chǎng)景,好不容易跑起來(lái),一不小心手一抖,斷點(diǎn)過(guò)去了,想回過(guò)頭看看剛才的變量值,如果不知道該技巧,只能再跑一遍。
          參考上圖,method1方法調(diào)用method2,當(dāng)前斷點(diǎn)的位置j=100,點(diǎn)擊上圖紅色箭頭位置的Drop Frame圖標(biāo)后,時(shí)間穿越了
          退回上一步
          回到了method1剛開(kāi)始調(diào)用的時(shí)候,變量i變成了99,沒(méi)毛病吧,老鐵們,是不是很6 :)
          注:好奇心是人類(lèi)進(jìn)步的階梯,如果想知道為啥這個(gè)功能叫Drop Frame,而不是類(lèi)似Back To Previous 之類(lèi)的,可以去翻翻JVM的書(shū),JVM內(nèi)部以棧幀為單位保存線(xiàn)程的運(yùn)行狀態(tài),drop frame即扔掉當(dāng)前運(yùn)行的棧幀,這樣當(dāng)前“指針”的位置,就自然到了上一幀的位置。

          3.多線(xiàn)程調(diào)試

          多線(xiàn)程同時(shí)運(yùn)行時(shí),誰(shuí)先執(zhí)行,誰(shuí)后執(zhí)行,完全是看CPU心情的,無(wú)法控制先后,運(yùn)行時(shí)可能沒(méi)什么問(wèn)題,但是調(diào)試時(shí)就比較麻煩了,最明顯的就是斷點(diǎn)亂跳,一會(huì)兒停這個(gè)線(xiàn)程,一會(huì)兒停在另一個(gè)線(xiàn)程,比如下圖:
          如果想希望下一個(gè)斷點(diǎn)位置是第2句詩(shī)句,可能要失望了:
          如果想讓線(xiàn)程在調(diào)試時(shí),想按自己的愿意來(lái),讓它停在哪個(gè)線(xiàn)程就停在哪個(gè)線(xiàn)程,可以在圖中3個(gè)斷點(diǎn)的小紅點(diǎn)上右擊,
          即:Suspend掛起的條件是按每個(gè)線(xiàn)程來(lái),而非All。把這3個(gè)斷點(diǎn)都這么設(shè)置后,再來(lái)一發(fā)試試
          注意上圖中的紅框位置,斷點(diǎn)停下來(lái)時(shí),這個(gè)下拉框可以看到各個(gè)線(xiàn)程(注:給線(xiàn)程起個(gè)容易識(shí)別的名字是個(gè)好習(xí)慣!),我們可以選擇線(xiàn)程“天空中的飛鳥(niǎo)”
          斷點(diǎn)如愿停在了第2句詩(shī)。

          4.遠(yuǎn)程調(diào)試

          這也是一個(gè)裝B的利器,本機(jī)不用啟動(dòng)項(xiàng)目,只要有源代碼,可以在本機(jī)直接遠(yuǎn)程調(diào)試服務(wù)器上的代碼,打開(kāi)姿勢(shì)如下:

          4.1 項(xiàng)目啟動(dòng)時(shí),先允許遠(yuǎn)程調(diào)試

          java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}
          起作用的就是
          -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081
          注意:遠(yuǎn)程調(diào)試從技術(shù)上講,就是在本機(jī)與遠(yuǎn)程建立scoket通訊,所以端口不要沖突,而且本機(jī)要允許訪(fǎng)問(wèn)遠(yuǎn)程端口,另外這一段參數(shù),放要在-jar 或 ${main_class}的前面

          4.2 idea中設(shè)置遠(yuǎn)程調(diào)試

          然后就可以調(diào)試了

          前提是本機(jī)有項(xiàng)目的源代碼 ,在需要的地方打個(gè)斷點(diǎn),然后訪(fǎng)問(wèn)一個(gè)遠(yuǎn)程的url試試,斷點(diǎn)就會(huì)停下來(lái)。

          5. 臨時(shí)執(zhí)行表達(dá)式/修改變量的運(yùn)行值

          調(diào)試時(shí),可以臨時(shí)執(zhí)行一些表達(dá)式,參考下圖:點(diǎn)擊這二個(gè)圖標(biāo)中的任何1個(gè)都可以

          點(diǎn)擊+號(hào)后,就可以在新出現(xiàn)的輸入框里輸入表達(dá)式,比如i+5

          然后回車(chē),馬上就能看到結(jié)果

          當(dāng)然,如果調(diào)試時(shí),想動(dòng)態(tài)修改變量的值,也很容易,在變量上右擊,然后選擇Set Value,剩下的事,地球人都知道。
          好了,今天的文章就到這里了,牢記這5大調(diào)試技巧可以讓你快速定位問(wèn)題,迅速解決bug,最后祝大家debug愉快!

          往期熱門(mén)文章:

          1、IntelliJ idea 高效使用教程,一勞永逸!

          2、微軟再出手,這次要干翻 IDEA 了。。
          3、用好 Java 中的枚舉,讓你的工作效率飛起來(lái)!
          4、還在用分頁(yè)?太Low !試試 MyBatis 流式查詢(xún),真心強(qiáng)大!
          5、告別 swagger-ui ,我選擇了這款神器!
          6、JDK/Dubbo/Spring 三種 SPI 機(jī)制,誰(shuí)更好?
          7、小團(tuán)隊(duì)真的適合引入Spring Cloud微服務(wù)嗎?
          8、人臉識(shí)別的時(shí)候,一定要穿上衣服啊!否則。。。
          9、知乎高贊:PDD和國(guó)家電網(wǎng),選哪個(gè)?
          10、IDEA 中的熱部署神器!

          瀏覽 77
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久视频免费观看 | 日本亲子乱婬免费播放 | 欧美Ⅴ,亚州v,在线免费视频。 | 黄色操| 91成人精品视频 |