1. 什麼是 Debug?
還記得以前不會使用 Intellij IDEA 的 debug 功能時,想要看什麼數據都是在那行數據的下面一行加上 System.out.println(),然後運行程序,把數據打印出來,如果要看另一個數據,我就再加一行 System.out.println(),所以我的代碼就會長的像下圖這樣。。。
<code>public User getMaleUser() { List<user> userList = userDao.getUserList(); // 打印出userList,看一下userList裡面的內容長怎樣 System.out.println(userList); // 從userList中取出男生,然後回傳 User resultUser; for (User user : userList) { if (user.getGender() == "男") { resultUser = user; } } // 打印出resultUser,確認一下回傳的user到底是哪一個 System.out.println(resultUser); return resultUser;}/<user>/<code>
可想而知,這樣做的開發效率是非常差的,每多看一個數據就要多增加一行 System.out.println(),而且每次改動之後,都要重新運行程序,讓程序再打印出一次數據,我想想都覺得痛苦,難道 IDEA 就沒有一個能夠實時反應出現在這個數據的數值是什麼的功能嗎?
事實上,IDEA 是有提供的!當我們在運行代碼時,改成使用 Debug 模式 運行就可以了!
2. IDEA 的 Debug 模式
使用 IDEA 的 Debug 模式來運行代碼的好處
可以一步步排查代碼可以實時的知道代碼運行中的變量的值,甚至改變變量的值,從此不用再使用System.out.println()去打印代碼變量了在 IDEA 的 Debug 模式中,有幾個比較重要的功能面板如下
3. Debug 基本用法
IDEA 的 Debug 模式基本用法主要對應著上述的 3. 調試按鈕和 4. 服務按鈕這兩組按鈕
調試按鈕,從左到右共 8 個按鈕
服務按鈕,從上到下共 7 個按鈕
4. Debug 模式下的變量查看
在 Debug 過程中,跟蹤查看變量的變化是非常必要的,有幾個方式可以查看當前變量的值
5. 計算表達式 Evaluate Expression
在前面第三部分有提到一個計算表達式 Evaluation Expression 按鈕,可以使用這個按鈕在調試過程中計算某個表達式的值,或是直接改變某個變量的值,而不用再去重新改代碼手動改變量的值然後再重啟程序
假設在 Debug 模式下,想要快速比較當前 list.get(0).equals("first") 的結果,可以不用改代碼,直接在計算表達式裡面運算,讓 IDEA 快速幫助我們計算出這個函式會回傳的值,非常方便,像是下面的 3. Result 部分,得到的就是使用計算表達式運行 list.get(0).equals("first") 的結果
或是說想要更改變量的值的話,也可以透過計算表達式來改變,像是下面這個例子,正常代碼來說,list 裡只會有 first、second 兩個字串,但是因為我們在計算表達式裡調用了 list.add("third") 向 list 裡插了一條新的字串,所以下方 Variables 變量區才會顯示 list 裡面有三個字串 first、second、third
題外話說一下,如果只是單純想要改變變量的值的話,還有另一種方法,不用透過計算表達式那麼麻煩。只要在 Variables 變量區直接在變量上點右鍵,使用 setValue 也能重新改變此變量的值的
6. 斷點條件設置
有的時候在遍歷一個集合或是數組的時候,可能只想要看 for 迴圈面的某個 i 值超過多少以上的變量情況,這時候就可以透過設置斷點條件來達成,也就是說,只有在滿足了斷點條件時,才會停在斷點處,不然就會直接忽略此斷點
對斷點點擊右鍵可以設置斷點條件,像是下圖是設置成在 i=3 時才停下(如果沒有設置斷點條件的話,則每進一次for loop,每個 i 都會停一次斷點)
7. 查看所有斷點
在左下方點擊 View Breakpoints 可以查看目前已經設置的所有斷點,有時候自己斷點打多了很容易忘記打在哪,可以透過這個功能知道自己都在哪些地方打了斷點,取消勾選可以使此斷點失效
8. 設置異常斷點
當設置異常斷點,在程序中出現需要攔截的異常時,會自動定位到異常行
設置方式一樣是先點擊 view breakpoints,之後點擊 + 號添加異常斷點,這邊添加了 NullPointerException
當出現空指針異常時,會自動跳到拋出空指針異常的行數,省的我們再去定位問題點在哪,非常方便
9. 總結
本文列出了 Intellij IDEA 中 Debug 模式的實用用法,讓你在開發路上更順暢
不過要注意一點,因為 debug 時會讓整個程式停在你打的斷點上,所以千萬不能夠在正式環境下 debug,只能夠在測試環境進行 debug