1、普通斷點
【適用于查看變量運行的值铸史,不用log輸出】
比如以debug方式運行最易,在代碼行打了一個斷點,當(dāng)請求的時候就會自動停在那一行忌愚,右側(cè)就是相關(guān)變量的值
普通斷點.png
2、往下走的三種方式
(2-1)一步一步走
【適用于邏輯復(fù)雜却邓,需要一步一步排查】
(1)直接點擊按鈕一行一行走
往下走.png
(2-2)跳到下面光標(biāo)某處(只能往下)
【適用于快速跳轉(zhuǎn)到某個方法】
(2)點擊run ro cursor直接跳到下面某行(比如光標(biāo)在20行硕糊,點擊完跳轉(zhuǎn)按鈕之后就會運行到第20行)
(2-2-1)如果光標(biāo)在上面也點擊了這個按鈕的話,你會發(fā)現(xiàn)debug不能用了腊徙,不靈了简十,
這個時候需要先點擊左側(cè)的【暫停】撬腾,再點擊【放行】螟蝙,下次就可以正常用斷點了
跳到下面某行.png
(2-2-1)
暫停-放行.png
(2-3)條件暫停
【多用于循環(huán)里面的表達式判斷或者條件對于表達式判斷】
比如在普通斷點右擊會彈出一個小框,在condition里面輸入滿足的表達式結(jié)果為true就會暫停了民傻,
此時斷點不是普通的斷點胰默,上面會有一個問好,只有滿足條件才會暫停
條件暫停.png
3漓踢、回退
(3-1)往上回退
【適用于進入了方法套方法那種牵署,需要重新進入該方法】
當(dāng)進入一個方法發(fā)現(xiàn)需要斷點查看數(shù)據(jù)的哪一行以及走過值被改變了,這時候就需要方法回退重新進入彭雾,
這時候你會發(fā)現(xiàn)下面有一個reset frame,可以重新返回到方法調(diào)用的斷點位置
回退.png
方法調(diào)用出.png
(3-2)進入退出
【適用于源碼追蹤碟刺,或者快速進入某個方法锁保,或者返回上一層方法】
進入跳出.png
4薯酝、向下預(yù)測
【適用向下結(jié)果推斷,或者某個jdk內(nèi)部對象比如request條件輸出里面的值是否存在爽柒,用于寫代碼提前判斷吴菠,等等】
比如說現(xiàn)在走到了19行,拿到了L這個值浩村,如果下面有需要對這個之處理的做葵,不需要一步一步斷點走到下一步。
可以直接選中代碼點那個按鈕心墅,或者在里面直接點那個按鈕酿矢,
在彈出框里面輸完代碼之后點擊evalute就可以出結(jié)果了
往下預(yù)測.png
預(yù)測計算2.png
5榨乎、臨時賦值
【適用于數(shù)據(jù)臨時改變測試多種場景值代入】
如果說生成的值不是滿意,或者要測試其他結(jié)果不方便造數(shù)據(jù)瘫筐,就可以臨時改值
什么類型的對象都可以蜜暑,塞值的時候要滿足相應(yīng)的語法規(guī)則,比如有的是用add,字符串就是直接改策肝,long類型要加L后綴等
賦值.png
賦值2.png
6肛捍、強制退出
【適用于數(shù)據(jù)庫數(shù)據(jù)很珍貴那種,污染之后不容易造出來】
如果在到哪某個判斷或者結(jié)果不滿足的時候之众,在數(shù)據(jù)執(zhí)行之前可以拋出異常拙毫,強制退出方法
如果方法嵌套多層throw之后還會進到上層catch里面,這時候重復(fù)throw就行了棺禾。正常情況下都是一次缀蹄,
如果發(fā)現(xiàn)throw 之后進入了jdk的類類面,那么就可以【放行】了
throw1.png
throw2.png
7膘婶、并發(fā)調(diào)試
【適用于測試鎖或者事務(wù)的時候袍患,需要多線程進行調(diào)試判斷】
在普通斷點上右擊選擇thread,然后done確定,后面打斷點會自動變成thread選項
postman克隆一份請求重新發(fā)起進行測試
比如在第20行打了一個斷點竣付,發(fā)起了一個請求诡延,然后在第18行又打了一個斷點,
又復(fù)制了一份請求(不是代碼)進行發(fā)起古胆,你會發(fā)現(xiàn)兩個請求都在阻塞中
點擊不同請求進行切換肆良,可以發(fā)現(xiàn)請求1目前在20行,請求2在18行逸绎,可以切換不同請求進行斷點操作
多線程.png
請求.png
請求1.png
請求2.png