<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斷點(diǎn)調(diào)試技巧,多張動(dòng)圖包教包會(huì)

          共 5535字,需瀏覽 12分鐘

           ·

          2022-08-27 12:37

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨 及時(shí)送達(dá) ??


          • 一. 怎么開啟斷點(diǎn)調(diào)試?
          • 二. 調(diào)試界面咋那么多按鈕?
            • 1.返回?cái)帱c(diǎn)位置
            • 2.步過
            • 3.步入
            • 4,5.強(qiáng)制步入,步出
            • 6.回退斷點(diǎn)
            • 7.斷點(diǎn)跳到光標(biāo)處
            • 8.表達(dá)式計(jì)算
            • 9.恢復(fù)程序
            • 10.停止程序
            • 11.查看所有斷點(diǎn)
            • 12.禁用斷點(diǎn)
            • 13.其他
          • 三. 竟然有那么多調(diào)試斷點(diǎn)?
            • 1.方法斷點(diǎn)
            • 2.屬性斷點(diǎn)
            • 3.異常斷點(diǎn)
            • 4.終止斷點(diǎn)
            • 5.條件斷點(diǎn)
            • 6.流斷點(diǎn)
            • 7.多線程斷點(diǎn)
            • 8.遠(yuǎn)程斷點(diǎn)

          一. 怎么開啟斷點(diǎn)調(diào)試?

          隨著開發(fā)的深入,越來越覺得高效的調(diào)試方法是多么的重要了,但我們一般上來就是敲一些代碼,誰會(huì)去靜下心來學(xué)一些看似沒什么用的調(diào)試技巧呢?但這恰恰就是新手和老手之間的區(qū)別。

          斷點(diǎn)調(diào)試是很簡(jiǎn)單的,只需要點(diǎn)擊idea上方的小蟲子,啟動(dòng)調(diào)試即可,如下所示。

          ab105b9e0b76e57336a0af5aae83367b.webp這當(dāng)然不是本文的重點(diǎn),只是開個(gè)頭。

          二. 調(diào)試界面咋那么多按鈕?

          先來介紹一下界面。

          db7be6bf48dcc0b539b3644508748349.webp我給這些區(qū)域都標(biāo)了號(hào),下面來重點(diǎn)介紹。

          1.返回?cái)帱c(diǎn)位置

          1號(hào)按鈕,這個(gè)用的不多,如果你從其他地方想要回到斷點(diǎn)位置,就按一下即可,如下GIF所示。

          b1874902944afd0d0172bb86282901d2.webp

          2.步過

          2號(hào)按鈕,說人話就是一行行的往下執(zhí)行,不會(huì)進(jìn)入方法里面,如下所示。

          cfcc23cd250f5fb34cc3dc7d641dfbe1.webp

          3.步入

          3號(hào)按鈕,可以進(jìn)入我們自定義的方法,如果是其他類庫的方法不會(huì)進(jìn)入,如下所示。

          3ba2f12eaeeb16baddca295a0488d242.webp

          4、5.強(qiáng)制步入,步出

          4號(hào)5號(hào)按鈕,前者可以進(jìn)入深層的方法,包括官方的源碼,后者就是從對(duì)應(yīng)的方法中出來,演示如下。

          6ab879194f96255a7a94f63d17e4d0e7.webp

          6.回退斷點(diǎn)

          6號(hào)按鈕是很特殊的,如果你的代碼中沒有調(diào)用其他地方的方法,那么是呈灰色的,無法使用,只有進(jìn)入更深層的方法,才能夠使用,其實(shí)就是后悔藥,我們很多時(shí)候調(diào)試時(shí)不小心按的快了點(diǎn),很容易錯(cuò)過想看的位置,只能再次重啟嗎?不,使用這個(gè)drop frame 就可以了,演示如下。

          可以看到,這里往下執(zhí)行了add,但是還沒有執(zhí)行完,按這個(gè)按鈕,再次回到了調(diào)用方法之前,但對(duì)于數(shù)據(jù)庫插入等操作,其實(shí)是無法回退的,這里的回退只是因?yàn)橛涗浟藯P畔⒉拍軌蜃龅降摹?/p>

          0c0e1a3c6a879e4a253b2292b0abdda3.webp但是要注意,如果你某個(gè)方法調(diào)用完畢了,你想再回去那就沒有辦法了。

          7.斷點(diǎn)跳到光標(biāo)處

          7號(hào)按鈕也用的不多,主要是為了快速跳轉(zhuǎn)到光標(biāo)指向的那一行,如下所示。

          011d3e4cfc7719db9ad244dd2e175947.webp

          8.表達(dá)式計(jì)算

          8號(hào)按鈕是計(jì)算表達(dá)式的,我們模擬從數(shù)據(jù)庫獲取集合,用表達(dá)式查詢對(duì)應(yīng)的元素,如下所示。

          8320f45c8b72713a5c25d1b853d63254.webp

          9.恢復(fù)程序

          9號(hào)按鈕稱為 Resume Program,能夠跳轉(zhuǎn)到指定的斷點(diǎn)處,我們?cè)?0行和第100行各加一個(gè)斷點(diǎn),需要點(diǎn)幾下該按鈕跳轉(zhuǎn)到100行呢?答案是一次即可,第一次斷點(diǎn)會(huì)在第10行停下,點(diǎn)擊改按鈕直接飛越90行到第100行,如下所示。

          9bc8ed7a22fcc695480890140a8c8a99.webp

          10.停止程序

          10號(hào)按鈕就是停止調(diào)試,但是注意,即便停止了調(diào)試,程序也會(huì)繼續(xù)運(yùn)行下去,如何想讓他就在斷點(diǎn)處停止呢?后面我會(huì)說到。

          11.查看所有斷點(diǎn)

          11號(hào)按鈕打開又別有乾坤,基本功能如下圖所示,主要是設(shè)置,查看斷點(diǎn)信息,大家看著應(yīng)吧,實(shí)用的方法我會(huì)在下面講的。

          fb9e38672a5489d1c919982e87a2cb77.webp

          12.禁用斷點(diǎn)

          12號(hào)按鈕就簡(jiǎn)單了,暫時(shí)禁用掉斷點(diǎn),方便程序繼續(xù)執(zhí)行,一般配合 Resume Program。

          13.其他

          13號(hào)其實(shí)不是按鈕,而是一塊區(qū)域,這里面存放了很多變量的信息,方便我們查看。

          14號(hào)按鈕其實(shí)之前被我忽略掉了,這次拿出來講一下,在watch可以監(jiān)控變量的變化,有同學(xué)說,中間的變量欄也可以看啊,但是單獨(dú)拉出來,看起來更加的方便,演示如下。

          c570eac33882cc7fc4497666c94363b8.webp

          三. 竟然有那么多調(diào)試斷點(diǎn)?

          這里省略了普通的行斷點(diǎn)調(diào)試,畢竟是最簡(jiǎn)單的,大家都會(huì)。

          1.方法斷點(diǎn)

          方法斷點(diǎn)是不是用在普通方法上的,最好的用法是在接口上使用,當(dāng)我們?cè)谡{(diào)試源碼的時(shí)候,如果在接口上打了斷點(diǎn),再往下走,可以直接跳轉(zhuǎn)到實(shí)現(xiàn)類的實(shí)現(xiàn)方法上,而不需要我們一個(gè)個(gè)的去找。

          案例中,有一個(gè)接口DemoInterface,它有兩個(gè)實(shí)現(xiàn)類,讓我們看下效果吧,演示如下。

          a268530de4356c075e72d09a5f9dd8c6.webp注意,方法斷點(diǎn)是一個(gè)菱形標(biāo)志。

          9ef874e4795e5760f5492b2aa46cf271.webp

          其實(shí)可以直接在接口方法上打斷點(diǎn),直接跳轉(zhuǎn)到對(duì)應(yīng)的實(shí)現(xiàn)方法的,這里是為了放慢演示速度。

          2.屬性斷點(diǎn)

          屬性斷點(diǎn)是打在屬性上的,我們無需再getter setter方法上打斷點(diǎn),在屬性上打上斷點(diǎn),就會(huì)出現(xiàn)一個(gè)小眼睛的標(biāo)志,如下所示。

          6227c23206467e8e14d844cd57b97999.webp

          在眼睛上點(diǎn)擊右鍵可以設(shè)置。

          我們一般是通過getter,setter方法設(shè)值的,所以就會(huì)在這兩個(gè)方法上停留。

          d992687a28c1264450e3769d05a28f40.webp

          看一下GIF演示吧。

          aceeec297d4bcd0e49bef067ff04d25f.webp

          3.異常斷點(diǎn)

          在線上由于空指針出現(xiàn)了BUG,我們想快速定位到哪里出現(xiàn)了空指針,應(yīng)該怎么做呢,答案就是,異常斷點(diǎn)!演示如下。

          2d362f6102453b65f3c9d4658f90ec58.webp

          注意,異常斷點(diǎn)是一個(gè)閃電的標(biāo)志。

          9ca72a28d47ce0ddd2cc7efc0651920c.webp

          可以看到,我們?cè)谌执蛄藗€(gè)空指針斷點(diǎn),只要哪里出現(xiàn)了空指針,就會(huì)在那里停止,太方便了!

          4.終止斷點(diǎn)

          前面我們說過,即便停止程序,也不會(huì)讓我們后面運(yùn)行的代碼取消執(zhí)行,那么我一定要取消執(zhí)行可以嗎?當(dāng)然是可以的,演示如,在方法棧上點(diǎn)擊右鍵,有一個(gè)Force Return,然后再點(diǎn)擊Resumer Program,就可以直接終止返回了。

          20b93857a581382de23cbe74e0645dbd.webp

          5.條件斷點(diǎn)

          我想要在某個(gè)條件滿足的時(shí)候打上斷點(diǎn),而不想一步步的走下去,有什么辦法嗎?當(dāng)然有,在斷點(diǎn)處右擊,在condition里填入相應(yīng)的條件即可,演示如下。

          420d17a4f758b367a7fa352511e0643f.webp

          6.流斷點(diǎn)

          我們使用流的時(shí)候,很難看到中間做了什么,但其實(shí)idea就幫我們解決了,我用斷點(diǎn)調(diào)試下面代碼,給大家演示下。

          其實(shí)只需要找到這個(gè)按鈕就行了

          ebcbde05a880adff0ba40a7cd0214c03.webp

                ?List<Integer>?list?=?new?ArrayList<>(Arrays.asList(1,?3,?3,?4,?4,?4,?5,?6,?78));
          ????????List<Integer>?collect?=?list.stream()
          ??????????//先將偶數(shù)篩選,再去重,返回集合
          ????????????????.filter(s?->?s?%?2?==?0)
          ????????????????.distinct()
          ????????????????.collect(Collectors.toList());
          5c7b4e86c513846c008b80d7215c186b.webp

          7.多線程斷點(diǎn)

          給大家演示兩種情況,多線程下調(diào)試,定時(shí)任務(wù)下調(diào)試。

          這個(gè)演示比較簡(jiǎn)單,可能有同學(xué)不以為意,你可以去嘗試下,如果使用默認(rèn)All來調(diào)試多線程程序會(huì)發(fā)生什么,可能某條線程就跑掉了,沒有停留,而這種方式可以捕獲到運(yùn)行的所有線程。

          bd226de34b29711a183c44c72e373200.webp定時(shí)任務(wù)這樣調(diào)試有個(gè)好處,即便我們?cè)谡{(diào)試的過程中下一個(gè)任務(wù)也到時(shí)間了,也不會(huì)執(zhí)行,防止多次定時(shí)任務(wù)執(zhí)行帶來的干擾,我在演示前已經(jīng)提前一分鐘啟動(dòng)了程序,每隔10秒鐘打印一次,但是由于暫停了線程的執(zhí)行,多次點(diǎn)擊Resumer Program,發(fā)現(xiàn)并沒有往下執(zhí)行哦,而是再等了10秒鐘之后執(zhí)行。

          85e24dc75c5efcbcf1e9b51c75f89529.webp

          8.遠(yuǎn)程斷點(diǎn)

          這個(gè)忽略啦,因?yàn)榇_實(shí)沒有遠(yuǎn)程打過斷點(diǎn),有時(shí)間再補(bǔ)充吧,個(gè)人感覺可有可無。

          來源:blog.csdn.net/weixin_44353507/article/

          details/124965399

              
                
                  
                    
                      

          1.?MyBatis多條件查詢、動(dòng)態(tài)SQL、多表操作、注解開發(fā)詳細(xì)教程

          2.?面試官:Java 序列化和反序列化為什么要實(shí)現(xiàn) Serializable 接口?

          3.?別再用currentTimeMillis統(tǒng)計(jì)耗時(shí)了,太 Low,試試StopWatch吧!

          4.?Nacos 2.1.1 正式發(fā)布,真心強(qiáng)!

                        

          最近面試BAT,整理一份面試資料 Java面試BATJ通關(guān)手冊(cè) ,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“ 在看 ”,關(guān)注公眾號(hào)并回復(fù)? Java ?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

                        

          PS:因公眾號(hào)平臺(tái)更改了推送規(guī)則,如果不想錯(cuò)過內(nèi)容,記得讀完點(diǎn)一下 在看 ,加個(gè) 星標(biāo) ,這樣每次新文章推送才會(huì)第一時(shí)間出現(xiàn)在你的訂閱列表里。

          點(diǎn)“在看”支持小哈呀,謝謝啦

          瀏覽 50
          點(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>
                  天天干天天草天天摸 | 美女靠比网站 | 一级免费看精品 | 一道本无码在线观看 | 777国产视频 |