一、前言
為什么需要調(diào)試代碼?調(diào)試可以幫助我們理解代碼運(yùn)行時(shí)的執(zhí)行細(xì)節(jié),例如變量的值等。通常,我們通過調(diào)試來發(fā)現(xiàn)并修復(fù)代碼中的錯(cuò)誤。熟練掌握調(diào)試技巧是成為一名合格程序員的基本要求。
本文的開發(fā)環(huán)境包括:
- 操作系統(tǒng):Windows 10 X64
- Java SDK:jdk-8u141
- Maven:3.5
- IDE:IntelliJ idea 2017
二、調(diào)試技巧
設(shè)置斷點(diǎn)
立即學(xué)習(xí)“Java免費(fèi)學(xué)習(xí)筆記(深入)”;
在代碼編輯區(qū)域,點(diǎn)擊左側(cè)代碼行號(hào)的邊即可在該行設(shè)置斷點(diǎn)。
啟動(dòng)調(diào)試
通過鼠標(biāo)右鍵菜單選擇“Run App.main()”,或者使用快捷鍵Shift+F9啟動(dòng)調(diào)試。
啟動(dòng)調(diào)試后,程序會(huì)啟動(dòng)并停留在第一個(gè)斷點(diǎn)處,此時(shí)該行的代碼尚未執(zhí)行。IDEA的底部會(huì)出現(xiàn)Debug工作區(qū),鼠標(biāo)移動(dòng)到各按鈕上會(huì)顯示提示信息。本文僅介紹部分常用功能。
- 常用工具欄
綠色返回箭頭 | 重新運(yùn)行程序(Ctrl+F5) 綠色向右箭頭 | 繼續(xù)執(zhí)行程序,如果遇到斷點(diǎn)則會(huì)停留到該斷點(diǎn)(F9) 紅色方塊 | 停止程序(Ctrl+F2) 雙紅色小圓圈 | 查看所有斷點(diǎn)信息(Ctrl+Shift+F8)
- Debug工具欄
紅色箭頭+橫線 | 回到當(dāng)前待執(zhí)行,調(diào)試過程中如果查看引用的方法跳來跳去,可以使用該功能快捷返回(Alt+F10) 藍(lán)色向下箭頭 | 單步調(diào)試:執(zhí)行一條語句,但是遇到方法調(diào)用時(shí)不進(jìn)入,直到方法執(zhí)行完成后直接繼續(xù)(F8) 藍(lán)色向右下箭頭 | 單步調(diào)試:執(zhí)行一條語句,但是遇到系統(tǒng)類庫方法調(diào)用時(shí)不進(jìn)入,直到方法執(zhí)行完成后直接繼續(xù)。如果遇到非系統(tǒng)類庫中的方法,則會(huì)進(jìn)入該方法進(jìn)行調(diào)試(F7) 紅色向右下箭頭 | 單步調(diào)試:執(zhí)行一條語句,遇到方法調(diào)用時(shí)會(huì)進(jìn)入方法進(jìn)行調(diào)試(Alt+Shift+F7) 藍(lán)色向右上箭頭 | 執(zhí)行當(dāng)前方法并到下一步驟,如果當(dāng)前方法有斷點(diǎn)則會(huì)到下一個(gè)斷點(diǎn)(Shift+F8) 藍(lán)色向右下小箭頭+豎線 | 運(yùn)行到下一個(gè)斷點(diǎn)(Alt+F9)
- Frames區(qū)域
mian:12 | mian方法的第12行 App | 當(dāng)前的類名 io.ken.hello.Java | package name
- 變量區(qū)域
管理當(dāng)前方法已經(jīng)聲明的變量信息。
修改變量值
選中要修改的變量,使用快捷鍵F2進(jìn)入編輯模式。
按回車鍵保存,然后使用F8進(jìn)行單步調(diào)試。
這樣,本來運(yùn)行后result=false,結(jié)果由于我們修改了變量的值,原本會(huì)被跳過的if語句塊可以被調(diào)試。
三、IDEA調(diào)試快捷鍵總結(jié)
Shift+F9 | 啟動(dòng)調(diào)試 F9 | 繼續(xù)執(zhí)行程序,如果遇到斷點(diǎn)則會(huì)停留到該斷點(diǎn) Ctrl+F2 | 停止程序 Ctrl+Shift+F8 | 查看所有斷點(diǎn) Alt+F10 | 回到當(dāng)前待執(zhí)行,調(diào)試過程中如果查看引用的方法跳來跳去,可以使用該功能快捷返回 F8 | 單步調(diào)試:執(zhí)行一條語句,但是遇到方法調(diào)用時(shí)不進(jìn)入,直到方法執(zhí)行完成后直接繼續(xù) F7 | 單步調(diào)試:執(zhí)行一條語句,但是遇到系統(tǒng)類庫方法調(diào)用時(shí)不進(jìn)入,直到方法執(zhí)行完成后直接繼續(xù)。如果遇到非系統(tǒng)類庫中的方法,則會(huì)進(jìn)入該方法進(jìn)行調(diào)試 Alt+Shift+F7 | 單步調(diào)試:執(zhí)行一條語句,遇到方法調(diào)用時(shí)會(huì)進(jìn)入方法進(jìn)行調(diào)試 Shift+F8 | 執(zhí)行當(dāng)前方法并到下一步驟,如果當(dāng)前方法有斷點(diǎn)則會(huì)到下一個(gè)斷點(diǎn) Alt+F9 | 運(yùn)行到下一個(gè)斷點(diǎn)