http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-a-debug-settings-1.jpg" alt="Debug 設(shè)置" />
- 如上圖標(biāo)注 1 所示,表示設(shè)置 Debug 連接方式,默認(rèn)是
Socket。Shared memory是 Windows 特有的一個(gè)屬性,一般在 Windows 系統(tǒng)下建議使用此設(shè)置,相對(duì)于Socket會(huì)快點(diǎn)。
| 快捷鍵 | 介紹 |
|---|---|
| F7 | 在 Debug 模式下,進(jìn)入下一步,如果當(dāng)前行斷點(diǎn)是一個(gè)方法,則進(jìn)入當(dāng)前方法體內(nèi),如果該方法體還有方法,則不會(huì)進(jìn)入該內(nèi)嵌的方法中 必備 |
| F8 | 在 Debug 模式下,進(jìn)入下一步,如果當(dāng)前行斷點(diǎn)是一個(gè)方法,則不進(jìn)入當(dāng)前方法體內(nèi) 必備 |
| F9 | 在 Debug 模式下,恢復(fù)程序運(yùn)行,但是如果該斷點(diǎn)下面代碼還有斷點(diǎn)則停在下一個(gè)斷點(diǎn)上 必備 |
| Alt + F8 | 在 Debug 的狀態(tài)下,選中對(duì)象,彈出可輸入計(jì)算表達(dá)式調(diào)試框,查看該輸入內(nèi)容的調(diào)試結(jié)果 必備 |
| Ctrl + F8 | 在 Debug 模式下,設(shè)置光標(biāo)當(dāng)前行為斷點(diǎn),如果當(dāng)前已經(jīng)是斷點(diǎn)則去掉斷點(diǎn) |
| Shift + F7 | 在 Debug 模式下,智能步入。斷點(diǎn)所在行上有多個(gè)方法調(diào)用,會(huì)彈出進(jìn)入哪個(gè)方法 |
| Shift + F8 | 在 Debug 模式下,跳出,表現(xiàn)出來(lái)的效果跟 F9 一樣 |
| Ctrl + Shift + F8 | 在 Debug 模式下,指定斷點(diǎn)進(jìn)入條件 |
| Alt + Shift + F7 | 在 Debug 模式下,進(jìn)入下一步,如果當(dāng)前行斷點(diǎn)是一個(gè)方法,則進(jìn)入當(dāng)前方法體內(nèi),如果方法體還有方法,則會(huì)進(jìn)入該內(nèi)嵌的方法中,依此循環(huán)進(jìn)入 |
| Drop Frame | 這個(gè)不是一個(gè)快捷鍵,而是一個(gè) Debug 面板上的按鈕。該按鈕可以用來(lái)退回到當(dāng)前停住的斷點(diǎn)的上一層方法上,可以讓過(guò)掉的斷點(diǎn)重新來(lái)過(guò) |
有時(shí)候我們可以這樣粗魯?shù)卣J(rèn)為 Debug 的使用就是等同于這幾個(gè)快捷鍵的使用,所以上面的 必備 快捷鍵是我們必須牢記的,這些也是開(kāi)發(fā)很常用的。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-b-debug-use-1.gif" alt="Debug 特殊技能使用" />
- 如上圖 Gif 所示,查看所選對(duì)象的方法常用有三種方式:
- 選中對(duì)象后,使用快捷鍵
Alt + F8。- 選中對(duì)象后,拖動(dòng)對(duì)象到
Watches。- 選中對(duì)象后,鼠標(biāo)懸停在對(duì)象上 2 秒左右。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-b-debug-use-2.gif" alt="Debug 特殊技能使用" />
- 如上圖 Gif 所示,在彈出表達(dá)式輸入框中 IntelliJ IDEA 也是能幫我們智能提示。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-b-debug-use-3.gif" alt="Debug 特殊技能使用" />
- 如上圖 Gif 所示,當(dāng)我們需要過(guò)掉后面的所有斷點(diǎn)的時(shí)候,我們不需要去掉這些斷點(diǎn),只需要點(diǎn)擊左下角那個(gè)小圓點(diǎn),點(diǎn)擊小圓點(diǎn)之后,所有斷點(diǎn)變成灰色,然后我們?cè)僭诎纯旖萱I
F9即可過(guò)掉當(dāng)前和后面所有的斷點(diǎn)。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-b-debug-use-4.gif" alt="Debug 特殊技能使用" />
- 我們可以給斷點(diǎn)設(shè)置進(jìn)入的條件。如上圖 Gif 所示,因?yàn)樽兞?temp3 不等于 200 所以該斷點(diǎn)沒(méi)有被進(jìn)入直接跳過(guò)。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-c-debug-use-2.jpg" alt="Debug 特殊技能使用" />
- 如上圖,我們可以給斷點(diǎn)設(shè)置更復(fù)雜的步入條件
- 紅框中的 Pass count 表示跳過(guò)多少次后開(kāi)始步入,比如 for 循環(huán)中,我們要查看一個(gè)變量循環(huán) 3 次后的結(jié)果就可以使用該方式。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-c-debug-use-3.jpg" alt="Debug 特殊技能使用" />
- 如上圖,對(duì)于某些不重要的斷點(diǎn),只要步入一次就夠了,就可以勾選此選項(xiàng),讓它步入之后自動(dòng)刪除。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-c-debug-use-4.jpg" alt="Debug 特殊技能使用" />
- 如上圖,對(duì)于某些場(chǎng)景的斷點(diǎn),需要其他斷點(diǎn)先觸發(fā)之后再進(jìn)行觸發(fā),可以選擇此項(xiàng)。默認(rèn)選擇的是: None
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-b-debug-use-5.gif" alt="Debug 特殊技能使用" />
- 有時(shí)候當(dāng)我們步入方法體之后,還想回退到方法體外。如 Gif 演示,斷點(diǎn)進(jìn)入
addNum方法后,點(diǎn)擊Drop Frame按鈕之后,斷點(diǎn)重新回到方法體之外。
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxiii-c-debug-use-1.jpg" alt="Debug 特殊技能使用" />
- 上圖 IntelliJ IDEA 版本:2017.1.3
- 如上圖左側(cè)紅框內(nèi)容,可以看到當(dāng)前斷點(diǎn)線程執(zhí)行的堆棧情況,最上面的為當(dāng)前斷點(diǎn)位置,下面的是斷點(diǎn)前面執(zhí)行的方法,如果需要看斷點(diǎn)前面走過(guò)的路,可以查看該區(qū)域。并且可以用圖上箭頭按鈕進(jìn)行限制顯示框架類(lèi)代碼的執(zhí)行過(guò)程,而不是包括依賴(lài) jar 里面的執(zhí)行過(guò)程。
- 如上圖右側(cè)紅框內(nèi)容,可以用來(lái)展示單點(diǎn)斷點(diǎn)位置的內(nèi)存情況,對(duì)于判斷內(nèi)存溢出相關(guān)問(wèn)題很有幫助。