1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        IDEA斷點調(diào)試技巧,多張動圖包教包會

        共 5535字,需瀏覽 12分鐘

         ·

        2022-08-27 12:37

        點擊關(guān)注公眾號,Java干貨 及時送達 ??


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

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

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

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

        ab105b9e0b76e57336a0af5aae83367b.webp這當然不是本文的重點,只是開個頭。

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

        先來介紹一下界面。

        db7be6bf48dcc0b539b3644508748349.webp我給這些區(qū)域都標了號,下面來重點介紹。

        1.返回斷點位置

        1號按鈕,這個用的不多,如果你從其他地方想要回到斷點位置,就按一下即可,如下GIF所示。

        b1874902944afd0d0172bb86282901d2.webp

        2.步過

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

        cfcc23cd250f5fb34cc3dc7d641dfbe1.webp

        3.步入

        3號按鈕,可以進入我們自定義的方法,如果是其他類庫的方法不會進入,如下所示。

        3ba2f12eaeeb16baddca295a0488d242.webp

        4、5.強制步入,步出

        4號5號按鈕,前者可以進入深層的方法,包括官方的源碼,后者就是從對應的方法中出來,演示如下。

        6ab879194f96255a7a94f63d17e4d0e7.webp

        6.回退斷點

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

        可以看到,這里往下執(zhí)行了add,但是還沒有執(zhí)行完,按這個按鈕,再次回到了調(diào)用方法之前,但對于數(shù)據(jù)庫插入等操作,其實是無法回退的,這里的回退只是因為記錄了棧信息才能夠做到的。

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

        7.斷點跳到光標處

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

        011d3e4cfc7719db9ad244dd2e175947.webp

        8.表達式計算

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

        8320f45c8b72713a5c25d1b853d63254.webp

        9.恢復程序

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

        9bc8ed7a22fcc695480890140a8c8a99.webp

        10.停止程序

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

        11.查看所有斷點

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

        fb9e38672a5489d1c919982e87a2cb77.webp

        12.禁用斷點

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

        13.其他

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

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

        c570eac33882cc7fc4497666c94363b8.webp

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

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

        1.方法斷點

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

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

        a268530de4356c075e72d09a5f9dd8c6.webp注意,方法斷點是一個菱形標志。

        9ef874e4795e5760f5492b2aa46cf271.webp

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

        2.屬性斷點

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

        6227c23206467e8e14d844cd57b97999.webp

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

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

        d992687a28c1264450e3769d05a28f40.webp

        看一下GIF演示吧。

        aceeec297d4bcd0e49bef067ff04d25f.webp

        3.異常斷點

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

        2d362f6102453b65f3c9d4658f90ec58.webp

        注意,異常斷點是一個閃電的標志。

        9ca72a28d47ce0ddd2cc7efc0651920c.webp

        可以看到,我們在全局打了個空指針斷點,只要哪里出現(xiàn)了空指針,就會在那里停止,太方便了!

        4.終止斷點

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

        20b93857a581382de23cbe74e0645dbd.webp

        5.條件斷點

        我想要在某個條件滿足的時候打上斷點,而不想一步步的走下去,有什么辦法嗎?當然有,在斷點處右擊,在condition里填入相應的條件即可,演示如下。

        420d17a4f758b367a7fa352511e0643f.webp

        6.流斷點

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

        其實只需要找到這個按鈕就行了

        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ào)試,定時任務下調(diào)試。

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

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

        85e24dc75c5efcbcf1e9b51c75f89529.webp

        8.遠程斷點

        這個忽略啦,因為確實沒有遠程打過斷點,有時間再補充吧,個人感覺可有可無。

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

        details/124965399

            
              
                
                  
                    

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

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

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

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

                      

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

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

                      

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

        “在看”支持小哈呀,謝謝啦

        瀏覽 50
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            97人伦影院A片在线观看97 | 六月天av| 日韩无码视频网 | 嗯灬用力灬高潮了灬快灬啊 | 日韩精品一区二区三区四虎影视 | 欧美五区| 成人免费看片视频 | 日韩黄色无码 | 亚洲日韩AV在线 | 一级毛片AAAA片 |