Eclipse的調試功能的10個小竅門[轉]

來源:互聯網
上載者:User

標籤:style   class   blog   c   code   java   

原文連結:http://www.importnew.com/6164.html

你可能已經看過一些類似“關於調試的N件事”的文章了。但我想我每天大概在調試上會花掉1個小時,這是非常多的時間了。所以非常值得我們來瞭解一些用得到的功能,可以幫我們節約很多時間。所以在這個主題上值得我再來寫一篇文章。

第一條: 不要過分的調試!

有關調試的第一條要牢記的便是這條很瘋狂的口號!但是我必須要在這裡再說一遍:不要過分的調試!試著將複雜的邏輯分解成獨立的小單元,然後寫單元測試代碼來保證小單元的正確運行。我經常看到某些人會這麼做:在一個大型的Web應用上點擊,填了幾個表單,跳轉了多個頁面,只是為了確認最後一個頁面的結果的正確性,最後在調試視圖下來開發代碼。

在你開啟tomcat之前,應該要先問問自己:有沒有什麼方法可以用單元測試來檢測代碼的行為呢?你可以找到很多教你如何寫出好的代碼的教程。而這裡我主要來談一談Eclipse的調試功能,你可能不知道,或者長時間以來有些淡忘的功能。

調試視圖:有條件的斷點

如果你僅僅對程式的某個部分感興趣,調試視圖是非常有協助的。假設你想看看一個迴圈中的第十三次迴圈得到什麼結果,或者你正在調試一個抽象父類,想看看某個具體的子類。你可以在調試視圖設定條件,右鍵點擊代碼旁的藍色斷點符號,在快顯功能表中選擇“Breakpoint Properties…”。你可以選擇是在你的程式碼片段返回真值是停止程式或者當你的程式碼片段的值改變時停止。

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

如果你想在變數視圖中查看Map或者List中的值,eclipse的預設設定可能不是那麼方便。譬如你在使用HashMap,你必須要點開所有的子節點才能看到HashMap中的內容,還要受到HashMap實現細節的幹擾。但是在變數上有一個小按鈕-“Show Logical Structure”。它非常的方便,尤其當你沒有實現某個對象的toString()代碼時。我的老闆前幾個星期剛剛告訴我Eclipse有這個功能。你知道,他是那種每天只用對著PowerPoint和Excel的人。這對我這種號稱程式員的傢伙來說是件多麼丟臉的事情啊!;-)

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

假設你在一個基於Web的表單中稍微改了一點輸入值,那麼我們不需要重啟調試session,你可以直接使用變數視圖的改變變數值的功能。這可以節省你的時間,有時候也能幫你類比一些奇怪的行為。

顯示視圖(Display View)

你知道還有個“顯示視圖”嗎?你可以通過“Window” -> “Show View” -> “Display”啟用這個視圖。現在你的Eclipse有一個完全空的視圖。你可以通過這個視圖來輸入以及驗證新的程式碼片段。這些代碼將會在當前的調試的位置的上下文中執行,這意味著你可以使用所有的變數,你甚至還能使用內容輔助。要執行這個代碼,你需要選中它,然後點擊右鍵快顯功能表點擊相應的項,或者按下CTRL+U(執行)或者按下CTRL+SHIFT+I(檢查)。

導航: Drop to Frame

我相信所有人都知道”Step Into”,“Step over”,甚至知道“Step return”。這是調試要掌握的最基本的技巧。我還想告訴你另外兩種方法。我非常喜歡它們。第一個是“Drop to Frame”。有了這個功能,你可以回到過去;-),你可以輕鬆回到你曾經運行過的Java stackframe中的位置。這對我來說非常有用,因為可能我錯過了某一點,有了”Drop to Frame”功能,我可以輕鬆重新運行那段代碼了。

導航: Step into Selection

第二個是“Step into Selection”。這個功能非常簡單,但是很多人都沒有使用。你僅僅需要按下Ctrl+Alt,同時點擊你想去的方法上點擊,快捷方便。相比較“Step Into”,“Step into Selection”更加方便。譬如假設你想進入某個有許多參數的方法,你可以使用一步就跳過所有參數的賦值。”Run to line”也是個不錯的功能。你只需要將滑鼠放在那一行前面,然後點擊”CTRL+R”。

導航:使用快速鍵

如果你不再使用滑鼠,你會變得更加有效率。至少你應該掌握以下的快速鍵:

F5 – “Step Into”

F6 – “Step Over”

F7 – “Step Return”

F8 – “Resume”

Ctrl+Shift+B – “Toggle Breakpoint”

Ctrl+Shift+I – “Inspect”

斷點視圖:Watchpoints

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

清晰易讀的對象

變數視圖是使用toString()方法來顯示一個對象的值,所以我們應該要寫出清晰易讀的toString()方法。java.lang.Object預設的toString()方法的javadoc也如此建議:

1 2 3 4 5 6 7 * Returns a string representation of the object. In general, the * toString method returns a string that * "textually represents" this object. The result should * be a concise but informative representation that is easy for a * person to read. * It is recommended that all subclasses override this method. [...]

你可以看一看commons-lang中的ToStringBuilder。它可以協助你寫出“良好的、前後一致的”toString()方法。

如果你不能修改toString()方法,譬如你使用架構,或是外來的API,在Eclipse中建立“Detail Fomatter”可以幫到你。在變數視圖中右擊某個對象,然後點擊“New Detail Formatter…”。然後你便能夠定義代碼,之後這種類型的Object都用這種形式來顯示。


原文連結: Codecentric 翻譯: ImportNew.com - 唐小娟

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.