idea debug调试_大牛都会用的 IDEA 调试技巧!!!
? ? ? ? 導(dǎo)讀? ? ? ??
前天面試了一個985高校的實習(xí)生,問了他平時用什么開發(fā)工具,他想也沒想的說IDEA,于是我拋磚引玉的問了一下IDEA的調(diào)試用過吧,你說說怎么設(shè)置斷點條件?那孩子懵了,想了好一會對我說沒用過,甚至都沒聽說過這個。
作為一名資深的老司機,IDEA調(diào)試可以說是家常便飯,如果不會debug,我都不信你讀過源碼,就別和我說原理了,直接pass掉。
? ? ? ? 基本界面? ? ? ??
IDEA的Debug運行模式如下圖:
① 以Debug模式啟動服務(wù),左邊的一個按鈕則是以Run模式啟動。在開發(fā)中,我一般會直接啟動Debug模式,方便隨時調(diào)試代碼。?
② 斷點:在左邊行號欄單擊左鍵,或者快捷鍵Ctrl+F8 打上/取消斷點,斷點行的顏色可自己去設(shè)置。?
③ Debug窗口:訪問請求到達第一個斷點后,會自動激活Debug窗口。如果沒有自動激活,可以去設(shè)置里設(shè)置。
④ 調(diào)試按鈕:一共有8個按鈕,調(diào)試的主要功能就對應(yīng)著這幾個按鈕,鼠標懸停在按鈕上可以查看對應(yīng)的快捷鍵。
⑤ 服務(wù)按鈕:可以在這里關(guān)閉/啟動服務(wù),設(shè)置斷點等。?
⑥ 方法調(diào)用棧:這里顯示了該線程調(diào)試所經(jīng)過的所有方法,勾選右上角的[Show All Frames]按鈕,就不會顯示其它類庫的方法了,否則這里會有一大堆的方法。?
⑦ Variables:在變量區(qū)可以查看當(dāng)前斷點之前的當(dāng)前方法內(nèi)的變量。?
⑧? Watches:查看變量,可以將Variables區(qū)中的變量拖到Watches中查看。
? ? ? ? 變量查看? ? ? ??
在調(diào)試過程中往往需要觀察變量的變化來判斷業(yè)務(wù)邏輯,我們可以在以下的四個地方觀察。
① 最常用的變量的觀察區(qū)域variables
② IDEA中最人性化的地方之一,會將變量的值陰影顯示在變量的后面。
③ watch區(qū)域,眼鏡的形狀,一般不會展開。如下圖:
點擊'+'號可以新增需要觀察的變量,點擊'-'號可以刪除。
④ 鼠標懸停在變量上也會出現(xiàn)變量的值,點擊展開即可查看。
? ? ? ? 計算表達式? ? ? ??
在調(diào)試業(yè)務(wù)邏輯的時候一般總會遇到某個條件或者某個變量的計算值的還不知道的情況下就需要判斷下一行代碼,那么此處就需要用到計算表達式的功能。計算表達式有兩種方法,如下:
① 選擇需要計算的代碼,鼠標右鍵---->Evaluate Expression--->Evaluate即可計算。
② 直接點擊計算器形狀控件即可彈出計算的窗口,將代碼復(fù)制進去即可,注意復(fù)制進去的代碼一定要符合邏輯,比如局部變量一定要是已經(jīng)聲明的。
? ? ? ? 斷點條件設(shè)置? ? ? ??
對于新手要看Spring源碼的話,再遇到調(diào)試UserService的doGetBean的方法時可能要崩潰,因為doGetBean在容器啟動的時候可能會被調(diào)用幾十次,你把斷點打在doGetBean方法體中能讓你生不如死。
1. 設(shè)置斷點條件有兩種方式:
① 直接在斷點上右鍵,添加condition條件即可。
② view breakpoints(ctrl+shift+F8)顯示所有的斷點,在condition中添加條件即可。
2. 異常斷點設(shè)置的方式
設(shè)置了異常斷點后,比如空指針異常,在程序出現(xiàn)需要攔截的異常時會自動定位到指定的行。如下圖:
①?ctrl+shift+F8顯示所有斷點,點擊+號添加Java Exception Breakpoints。
② debug運行,一旦有代碼出現(xiàn)該異常,會自動定位到指定代碼。
? ? ? ? 線程切換? ? ? ??
通常我們在調(diào)試的時候,一個請求過來被攔截了,此時想要發(fā)起另外一個請求是無法重新發(fā)的,因為另外一個請求被阻塞了,只有當(dāng)前線程執(zhí)行完成之后才會走其他的線程。在IDEA中可以改變一下阻塞級別,有兩種方法:
1. 斷點上右鍵--->選擇Thread---->Make Default,如下圖:
2. 顯示所有斷點(crtl+shift+F8),選中某一個斷點,選擇Thread,Make Default即可。如下圖:
設(shè)置了阻塞級別,此時就可以在線程切換了,如下圖:
? ? ? ? 強制拋異常? ? ? ??
這是IDEA 2018年加入的新功能,可以直接在調(diào)試中拋出指定的異常。使用方法跟上面的棄棧幀類似,右擊棧幀并選擇Throw Exception,然后輸入拋異常的代碼,比如throw new NullPointerException,操作如下圖:
? ? ? ? 強制返回? ? ? ??
這是IDEA2015版時增加的功能,類似上面的手動拋異常,只不過是返回一個指定值罷了。使用方法跟上面也都類似,右擊棧幀并選擇Force Return,然后輸入要返回的值即可。如果是void的方法那就更簡單了,連返回值都不用輸。如下圖:
至此文章IDEA的一些調(diào)試技巧就介紹完了,不是很全,還有很多強大的功能沒有介紹,如果讀者覺得陳某寫的不錯,有所收獲的幫忙點個贊,分享一下,謝謝!!!
總結(jié)
以上是生活随笔為你收集整理的idea debug调试_大牛都会用的 IDEA 调试技巧!!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cesium 3dtiles 加载本地数
- 下一篇: 属于服务器端运行的程序_Telerik