作爲開發者,掌握開發環境下的調試技巧十分有必要。去年就想把關於Eclipse斷點調試總結下了。因爲對時間的掌控程度仍需極大提高,結果拖到今年才寫了此篇博文。關於java調試技術還有非常多。如Java Debug Interface等,根據詳細項目的須要。還有非常多值得去研究和學習的。該博文僅就Eclipse斷點調試技巧做下總結,不足夠的地方還請大牛們指點。
1 Debug視圖
1.1 線程堆棧視圖
線程堆棧視圖表示當前線程的堆棧,從中能夠看出在執行哪些代碼,而且整個調用過程,以及代碼行號。分別介紹一下這幾個button的含義。從左至右分別爲:
1.表示當前實現繼續執行直到下一個斷點,快捷鍵爲F8。
2.表示打斷整個進程
3.表示進入當前方法,快捷鍵爲F5。
4.表示執行下一行代碼,快捷鍵爲F6。
5.表示退出當前方法,返回到調用層,快捷鍵爲F7。
6、表示返回當前線程堆棧的起始處開始運行。
1.2 變量視圖
1.爲變量名視圖。顯示當前代碼行中全部能夠訪問的實例變量和局部變量
2.顯示全部的變量值
3.能夠通過該窗體來改變變量值
1.3 斷點視圖
1.顯示全部斷點
2. 將當前窗體1中選中的port失效,再次點擊啓用。
3.異常斷點
常常遇見一些異常,然後程序就退出來了,要找到異常發生的地方就比較難了。還好能夠打一個異常斷點。
到了異常的地方。當前線程就掛起。
1.4 表達式視圖
表達式視圖是Debug過程中較爲經常使用的一個視圖,能夠對自己的感興趣的一些變量進行觀察,也能夠添加一些自己的表達式。也能夠查看一行代碼的執行結果。1.表達式2. 點擊此能夠新增一個表達式。
2 斷點種類
2.1 方法斷點
斷點大家都比較熟悉。在Eclipse Java 編輯區的行頭雙擊就會得到一個斷點,代碼會執行到此處時停止。方法斷點是打在方法的入口處。
方法斷點的特別之處在於它能夠打在 JDK的源代碼裏,因爲 JDK 在編譯時去掉了調試信息,所以普通斷點是不能打到裏面的,可是方法斷點卻能夠。能夠通過這樣的方法查看方法的調用棧。
2.2 條件斷點
條件斷點。顧名思義就是一個有一定條件的斷點。僅僅有滿足了用戶設置的條件,代碼纔會在執行到斷點處時停止。
在斷點處點擊鼠標右鍵。選擇最後一個"Breakpoint Properties"
斷點屬性中有三個選擇。啓用“Enable”,Hit Count和Conditional中根據我們的須要來選擇。
1)Hit Count 是指定斷點處的代碼段運行多少次,最典型的就是循環。假設要讓一個循環運行10次就線程掛起,則指定Hit Count值爲10。那麼當前的循環運行到第九次的時候就會掛掉。
2)Conditional,顧名思義。就是條件推斷,比如我們須要循環變量i==10時,線程掛起。則條件設定爲i==10,選擇Suspend when "true"。
那假設上面的Hit Count和Conditional都選擇的話,假設表達式和值設置不合理則會實效。
假設選擇Suspend when value changes。那麼可能在Conditional在變量值發生改變的時候就掛起。
2.3 變量斷點
斷點不僅能打在語句上。變量也能夠接受斷點,
上圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時能夠停止。當然變量斷點上也是能夠加條件的。和上面的介紹的條件斷點的設置是一樣的。呵呵。這部分我沒去實踐,找不到在哪裏設置~
2.4 改動變量值
改動變量值的情況適用於代碼停在斷點處,可是傳過來的值不對。那麼能夠通過改動這個變量值。保證代碼走正確的流程。或者是說有一個異常分支老是進不去。能不能調試時改一下條件,看一下異常分支代碼是否正確。
在Debug 視圖的 Variables 小窗體中。我們能夠在變量上右鍵。選擇"Change Value..." 在彈出的對話框中改動變量的值。
或是在以下的值查看窗體中改動,保用Ctr+S 保存後。變量值就會變成改動後的新值了。
2.5 又一次調試
這樣的調試的回退不是萬能的。僅僅能在當前線程的棧幀中回退,也就說最多僅僅能退回到當前線程的調用的開始處。回退時。請在須要回退的線程方法上點右鍵,選擇 "Drop to Frame"