【效率】- Eclipse調試技巧

所謂"工欲善其事必先利其器",而且對於一個功能開發中,實際的開發和調試的時間佔比接近於3:7,也就是我們開發人員的絕大部分時間是耗費在了調試上面,所以掌握一些調試技巧是可以極大提高我們的效率。

1. 概述

本文大約收集了筆者常用的幾個調試技巧,這些技巧不僅僅適用於平時的開發中,在閱讀源碼時更能起到如虎添翼的功效。

2. 技巧清單

2.1 變量視圖:顯示邏輯結構(Show Lodical Structure)

邏輯結構主要用來展示map之類的collection數據結構存儲的值的,它只展示存儲值的邏輯部分,而屏蔽了數據結構詳細的內部結構,更方便我們查看map之類collection結構裏存儲的值,推薦使用。
啓用方式
GIF動態效果

2.2 斷點視圖(Watchpoints)

“是什麼改變了變量?!” 有時創建watchpoint會有很大的幫助。當某個要監視的field的值改變時或是讀到時,調試器會停下來。雙擊某個field,這個watchpoint顯示在斷點視圖中,你可以編輯它的屬性。你也可以設置hit count,意思是當你輸入的hit count已經達到了,調試器便會停下來。這個也適合於普通的斷點。

它允許當一個選定的屬性被訪問或者被更改的時候程序執行暫停,並進行debug。最簡單的辦法是在類中聲明成員變量的語句行號左邊雙擊,就可以加入一個觀察點。
Watchpoints
這個功能非常有用,尤其是你在閱讀Spring這樣的IOC源碼時,你經常需要面臨"這個字段是什麼時候被賦值的?",以及"這個集合是什麼時候被填充的?"之類的問題,這個功能正好可以幫你解決這類問題。

2.3 Run to Line

斷點調試時,跳過不關心的細節,直接跳轉到指定行。 在操作上,只需要右鍵選擇想要跳轉到的行,選擇 run to line。
Run To Line

2.4 Step into Selection

僅僅需要按下Ctrl + F5,同時點擊你想去的方法上點擊,快捷方便。相比較“Step Into”,“Step into Selection”更加方便。譬如假設你想進入某個有許多參數的方法,你可以使用一步就跳過所有參數的賦值。
Step into Selection
這個技巧在追蹤源碼時候既然是有奇效,像Spring這樣的源碼,有些部分參數衆多,使用這個技巧能大大縮短不必要的時間,加快閱讀速度。

2.5 單步過濾

單步過濾就是跳過這些我們想忽略的方法直接到目標方法內部的一種debug技巧。

應用場景如下:

// 類似下面這行代碼
//	若試圖F5進入getTradeDetail內部,會首先執行itemStr.subString方法,即會先進入subString方法,而這方法是jdk的String方法,確定沒問題,不需要關心。
this.getTradeDetail(uid, itemStr.subString(0,5))

啓用方式:
在 Window > Preferences > Java > Debug > Step Filtering 設置過濾器, 可以選擇需要過濾掉的包和類。同時要確保你在debug視圖中啓用了單步過濾。
單步過濾

2.6 Display

在 Windows -> show view 中打開 display窗口,可以在display窗口裏寫表達式,然後右擊選擇display運行查看結果或者ctrl+shift+D快捷鍵組合,表達式可以是程序中一行代碼或者你自己寫的一個賦值語句來改變變量值之類的。
啓用Display
必須選中表達式才能進行操作
執行語句

2.7 導航: Drop to Frame

有了這個功能,你可以輕鬆回到你曾經運行過的Java stackframe中的位置。有了”Drop to Frame”功能,你可以輕鬆重新運行錯過的那段代碼(注意本次已經修改過的值不會還原)。
Drop to Frame

2.8 變量視圖:更改值…(Change Value…)

直接使用變量視圖的改變變量值的功能。這可以節省你的時間,有時候也能幫你模擬一些奇怪的行爲。
Change Value…

2.9 條件斷點

很多時候我們都是希望在滿足某個條件的時候程序中止,此時條件斷點正是我們所需要的。
條件斷點

2.10 Expression

在調試時候,我們經常會需要查看,修改甚至對比某個局部或者全局變量的值,此時相比較於Variable標籤頁,Expression標籤頁可能更適用。

3. Links

  1. eclipse調試java程序的九個技巧
  2. Eclipse調試的一些小技巧
  3. Eclipse的調試功能的10個小竅門
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章