Eclipse中debug的使用技巧


在使用Eclipse調試Java代碼過程當中,本身多數狀況下僅限於打斷點-》調試兩個動做。某然發現Eclipse提供了更高階的一些調試方法,在此記錄下來省得本身遺忘,順便分享。 java


【圖1】 eclipse

1,行斷點——Hit count
在循環或者遞歸等代碼塊中可使用hit count在到達指定次數時暫停線程(或虛擬機)。這在調試一些到達指定次數出錯的狀況時頗有用,好比代碼通常運行到十次以後開始出現怪異的錯誤。用例代碼以下: this

public static void main(String[] args)
	{
		int i = 0;
		for(; i < 99; i++)//breakpoint is here
		{
		                         System.out.println(String.format("Current times is %s .", i));
		}
	}

當打印輸出到:Current times is 49 .的時候斷點會自動中止。 spa

2,行斷點——condition
設置斷點condition的方法:右鍵單擊斷點->breakpoint properties->condition,在輸入框中輸入指定的條件。還以上述代碼爲例,選擇當i >= 60的時候開始觸發斷點。以下圖所示,當代碼運行到Current times is 60 .的時候開始中止,並在此以後因爲條件一直知足因此不斷觸發中斷。

【圖2】 線程

除了普通的Java語句(line point),Ecplise還提供了針對類加載(ClassLoading)斷點、監視斷點(watchpoint,打在類的內部變量上)、異常斷點、方法斷點,不一樣類型的斷點有不一樣的觸發條件設置。 debug

3,類加載斷點
打在Class上的斷點只有hit count選項。默認狀況下只有類首次加載的時候會觸發中斷,使用hit count的機會應該不多,也許可用在調試不一樣的ClassLoader加載同一個類的狀況。 調試

4,監視斷點
【圖3】
打在類的變量或靜態變量上,選項包括hit count、Access、Modification。其中Access或Modification至少須要選中一項纔可能會在訪問或修改變量值時觸發中斷。hit count做用天然是在第幾回的時候觸發中斷。 code

5,異常斷點

【圖4】
異常斷點能夠經過Breakpoints視圖的Add Java Exception Breakpoint按鈕添加,在方法拋出指定的異常的時候會觸發中斷。可選項包括Caught locations、Uncaught locations、Subclass of this exception分別對應捕獲、未捕獲、爲當前Exception的子類的時候觸發中斷。在Debug模式下Eclipse會在拋出異常時自動中斷,這裏的異常斷點是指存在多層調用的時候每每原始的異常已經被catch或者封裝成其它的異常,經過異常斷點能夠在原始異常拋出和被捕獲的時候中斷。
須要注意的是Eclipse默認會在拋出未捕獲的異常時中斷,因此取消Uncaught locations時看起來是沒有效果的,拋出的異常仍然會觸發中斷。能夠經過window-》preferences-》java-》debug取消suspend on uncaought exception的選項,此時只有在勾選了Uncaught locations時纔會觸發中斷。 orm

6,方法斷點

【圖5】
方法異常能夠在進入或離開方法時觸發中斷,默認狀況下會在進入方法時觸發中斷,經過勾選Exit能夠在方法結束時觸發中斷。 遞歸

關於Eclipse異常的介紹能夠參考:http://www.eclipse-tips.com/tips/29-types-of-breakpoints-in-eclipse#ExceptionBreakpoint

預告後面發佈的內容,以鞭策本身不能偷懶,立證在此不寫丟人:會在本週內至少發佈一篇關於JUnit使用的深刻介紹,並在後續完成JUnit原碼賞析的博客。

相關文章
相關標籤/搜索