編寫代碼的時候,有時候我們需要跟蹤代碼的運行情況,使用斷點調試就是一個不錯的方法,接下來介紹一下如何在IDEA中使用斷點進行調試
文章目錄
1. 設置斷點
直接在你需要打斷點的代碼的行號區域,點擊,即可設置斷點,如圖所示
這里補充一下對斷點的理解:斷點打在代碼的前面,例如11行的斷點打在第11行代碼的前面,意味着,當程序運行到11行代碼的斷點時,第11行代碼其實並未運行
2. 調試
點擊綠色的三角形進行運行程序,點擊綠色的小瓢蟲就是運行調試程序
程序就會進入調試界面,代碼行處的斷點標記,都變成了紅色的箭頭,藍色的部分表示現在程序所停的行數
最下面的就是調試窗口,調試窗口的左邊部分是方法棧,即越下面的方法是越早被調用的,調試窗口的右邊部分是變量的值
3. 調試的基本操作
3.1 step over
在調試窗口的上方,含義為:進入下一步,如果當前行斷點是一個方法,則不進入當前方法體內。即從代碼行A,跳到下一行代碼A + 1,並執行原來A行代碼
例如:
現在執行到第12行代碼(12行未執行),當前的map里只有一個元素,我們可以在下面的Variables中確認只有一個元素
當我們點擊step over時:第12行內容被執行,map的size變為2,程序來到第13行
3.2 step into 跟 Force step into
這兩個都是表示:進入下一步,如果當前行斷點是一個方法,則進入當前方法體內。但有一點區別,step into 只針對自定義的方法,如果對應的方法是官方庫的方法,並不會進入方法體內。但Force step into,無論方法是什么方法,都會進入到方法體中
舉例:
當執行到第15行,一個自定義的函數時:
使用 step into
則進入了該方法體內
但如果是這種官方庫的方法,則無法進入:
此時,如果需要進入到方法體中,則需要使用Force step into:
這里進入到hashmap中
3.3 step out
跳出,即我們在方法體中運行時,不想繼續一行一行的運行,想直接回到上一層的方法中,則使用step out跳出
如剛才上面的調試,我們進入到hashmap中:
使用:step out 跳出
3.4 resume program
恢復程序運行,如果該斷點下面代碼還有斷點則停在下一個斷點上,即從一個斷點跳到另一個斷點
例如:程序調試到13行,點擊Resume Program,直接運行到下一個斷點15行處才停止
執行后:
3.5 mute breakpoints
使得所有的斷點失效 ,讓所有斷點失效,可以直接運行完剩余的程序
3.6 view breakpoints
查看所有斷點的信息
查詢結果:你可以看到自己設置的所有斷點的信息:
3.6 條件斷點
對斷點是否停止進行條件判斷,在斷點處右鍵即可設置:
例如,如果我們這樣子設置斷點的話,我們調試的過程中,這段代碼會停下來100次,如果我只想它在大於90的時候停止呢?
我們可以這樣子,設置條件斷點:
設置之后,斷點處會加上“?”
進行調試時,停下的時候: