IDEA:Debug使用详解(含2018版特性)
調試是開發中不可或缺的技能,調試能力的高低還決定你能力的高低,通常情況下我們都是使用各種IDE都提供強大的 Debug 工具來供我們調試,這里就轉載學習一篇介紹的很詳細的 IDEA 的 Debug 使用教程。
Debug 設置
- 如上圖標注 1 所示,表示設置 Debug 連接方式,默認是?Socket。Shared memory?是 Windows 特有的一個屬性,一般在 Windows 系統下建議使用此設置,相對于?Socket?會快點。
Debug 常用快捷鍵
| F7 | 在 Debug 模式下,進入下一步,如果當前行斷點是一個方法,則進入當前方法體內,如果該方法體還有方法,則不會進入該內嵌的方法中?必備 |
| F8 | 在 Debug 模式下,進入下一步,如果當前行斷點是一個方法,則不進入當前方法體內?必備 |
| F9 | 在 Debug 模式下,恢復程序運行,但是如果該斷點下面代碼還有斷點則停在下一個斷點上?必備 |
| Alt + F8 | 在 Debug 的狀態下,選中對象,彈出可輸入計算表達式調試框,查看該輸入內容的調試結果?必備 |
| Ctrl + F8 | 在 Debug 模式下,設置光標當前行為斷點,如果當前已經是斷點則去掉斷點 |
| Shift + F7 | 在 Debug 模式下,智能步入。斷點所在行上有多個方法調用,會彈出進入哪個方法 |
| Shift + F8 | 在 Debug 模式下,跳出,表現出來的效果跟?F9?一樣 |
| Ctrl + Shift + F8 | 在 Debug 模式下,指定斷點進入條件 |
| Alt + Shift + F7 | 在 Debug 模式下,進入下一步,如果當前行斷點是一個方法,則進入當前方法體內,如果方法體還有方法,則會進入該內嵌的方法中,依此循環進入 |
| Drop Frame | 這個不是一個快捷鍵,而是一個 Debug 面板上的按鈕。該按鈕可以用來退回到當前停住的斷點的上一層方法上,可以讓過掉的斷點重新來過 |
有時候我們可以這樣粗魯地認為 Debug 的使用就是等同于這幾個快捷鍵的使用,所以上面的?必備?快捷鍵是我們必須牢記的,這些也是開發很常用的。
?
idea的斷點調試-菜單講解
1:Step Over ,進入下一步,如果是方法,那就直接跳過(F8)
2:Step Into,進入下一步,如果是方法,就進入方法內部,但是不會進入jdk封裝的方法。(F7)
3:Force Step Into:強制進入下一步,不管是什么方法,即使是jdk封裝的方法,也會進入。(Alt+Shift+F7)
4:Step Out:跳轉到下一個斷點,沒有一直運行到最后。(Shift+F8)
5: Run to Cursor:運行到光標處 (Alt+F9)
?=========================
F9????????????resume?programe?恢復程序,下一個斷點
?
| F8 | 單步調試,不進入函數內部 |
| F7 | 單步調試,進入函數內部 |
| Shift+F7 | 選擇要進入的函數 |
| Shift+F8 | 跳出函數 |
| Alt+F9 | 運行到斷點 |
| Alt+F8 | 執行表達式查看結果 |
| F9 | 繼續執行,進入下一個斷點或執行完程序 |
| Ctrl+F8 | 設置/取消當前行斷點 |
| Ctrl+Shift+F8 |
|
?
Debug 特殊技能使用
- 如上圖 Gif 所示,查看所選對象的方法常用有三種方式:
- 選中對象后,使用快捷鍵?Alt + F8。
- 選中對象后,拖動對象到?Watches(在Watches里,還可以實現動態值修改)。
- 選中對象后,鼠標懸停在對象上 2 秒左右。
- 如上圖 Gif 所示,在彈出表達式輸入框中 IntelliJ IDEA 也是能幫我們智能提示。
- 如上圖 Gif 所示,當我們需要過掉后面的所有斷點的時候,我們不需要去掉這些斷點,只需要點擊左下角那個小圓點,點擊小圓點之后,所有斷點變成灰色,然后我們再在按快捷鍵?F9?即可過掉當前和后面所有的斷點。
- 我們可以給斷點設置進入的條件。如上圖 Gif 所示,因為變量 temp3 不等于 200 所以該斷點沒有被進入直接跳過。
- 如上圖,我們可以給斷點設置更復雜的步入條件
- 紅框中的 Pass count 表示跳過多少次后開始步入,比如 for 循環中,我們要查看一個變量循環 3 次后的結果就可以使用該方式。
- 如上圖,對于某些不重要的斷點,只要步入一次就夠了,就可以勾選此選項,讓它步入之后自動刪除。
- 如上圖,對于某些場景的斷點,需要其他斷點先觸發之后再進行觸發,可以選擇此項。默認選擇的是: None
- 有時候當我們步入方法體之后,還想回退到方法體外。如 Gif 演示,斷點進入?addNum?方法后,點擊?Drop Frame?按鈕之后,斷點重新回到方法體之外。
- 上圖 IntelliJ IDEA 版本:2017.1.3
- 如上圖左側紅框內容,可以看到當前斷點線程執行的堆棧情況,最上面的為當前斷點位置,下面的是斷點前面執行的方法,如果需要看斷點前面走過的路,可以查看該區域。并且可以用圖上箭頭按鈕進行限制顯示框架類代碼的執行過程,而不是包括依賴 jar 里面的執行過程。
- 如上圖右側紅框內容,可以用來展示單點斷點位置的內存情況,對于判斷內存溢出相關問題很有幫助。
?
在?IntelliJ IDEA 版本:2018.1中還有可以實現
debug異常模擬
IDEA的debug功能可以說讓我愛不釋手,無論是bug的排查,源碼的閱讀,超多驚艷的功能幾乎每次都能讓你瞬間定位關鍵代碼。在之前的版本,IDEA已經實現了表達式(段落)求值,動態值修改,force return等強悍的調試功能,新版增加了Exception模擬功能。debug的時候,你可以在任意一個地方,模擬異常的拋出,這在驗證代碼的異常完備性方面非常有用。
參考來源:https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/debug-introduce.md
總結
以上是生活随笔為你收集整理的IDEA:Debug使用详解(含2018版特性)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Java 核心技术卷1 第10版》学习
- 下一篇: RPC 【Remote Procedur