前言:本文的核心是記錄debug的使用,與具體的操作系統無關。
1.什么是Debug
Debug是程序的一種運行模式。用來發掘程序的走向,以及程序在運行過程中參數的變化。
2.Debug的作用
debug用來追溯代碼的運行流程,通常在程序運行跟預期結果不符合的時(程序運行時出現異常),那么啟動debug模式可以分析定位異常發生的位置,幫助程序員更好的fix bug
3.Debug的使用
主要講解intellj中debug的使用 ,此篇不會講解debug時可用的快捷鍵。
配合idea中圖形界面來進行講解。
3.1.程序打上斷點
首先為程序打上斷點,我采用的是spring demo,因為這樣可以演示給第三方spring jar包如何打上斷點。
主程序上斷點如下圖所示:![]()
程序打上斷點.png
第三方jar包反編譯源代碼斷點如下圖所示:![]()
屏幕快照 2016-10-26 下午3.09.44.png
3.2單步調試
3.2.1 Step Over:
點擊紅色箭頭指向的按鈕,程序向下執行一行。![]()
屏幕快照 2016-10-26 下午3.21.02.png
但有一種情況需要注意,如果在一個順序執行的程序文件中打上斷點,而第一行被打上斷點的代碼調用了其他方法,而且這個被調用的方法上也有斷點,那么這樣單步執行的順序是,先祝程序文件中第一行被打斷點的程序運行,接下來是被調用方法中打了斷點的那一行代碼,最后接着順序運行此主程序文件中其它被打了斷點的代碼。
3.2.2 Step Into:
點擊紅色箭頭指向的按鈕,程序向下執行一行。如果該行有自定義方法,則運行進入自定義方法,如果有第三方類庫方法,則在idea 中可以進入第三方代碼中。具體步驟如下:![]()
屏幕快照 2016-10-26 下午3.41.02.png
在程序第十三行設置斷點,然后點擊上圖中紅色箭頭指向的按鈕,程序運行至第三方類庫當中代碼,代碼如下圖所示:![]()
屏幕快照 2016-10-26 下午3.45.08.png
3.2.3 step out![]()
屏幕快照 2016-10-26 下午3.48.30.png
如果在調試的時候你進入了一個方法,並覺得該方法沒有問題,你就可以使用stepout跳出該方法,返回到該方法被調用處的下一行語句。值得注意的是,該方法已執行完畢。
3.2.4 Drop frame![]()
屏幕快照 2016-10-26 下午3.50.50.png
點擊該按鈕后,你將返回到當前方法的調用處(如上圖,程序會回到main()中)重新執行,並且所有上下文變量的值也回到那個時候。只要調用鏈中還有上級方法,可以跳到其中的任何一個方法。
3.2.5 純斷點運行
所謂純斷點運行表示:程序只在斷點處停留。![]()
屏幕快照 2016-10-26 下午3.55.53.png
發現上述兩個按鈕都可以實現效果
3.2.6 查看斷點
按如下按鈕可以查看程序中所有的斷點:![]()
屏幕快照 2016-10-26 下午3.58.03.png
效果圖如下所示:![]()
屏幕快照 2016-10-26 下午3.59.29.png
你可以從中刪除不想要的斷點。重新debug
3.2.7 變量值查看
idea中變量值的查看非常簡單如下圖:![]()