Eclipse的Debug調試技巧

做爲開發人員,掌握開發環境下的調試技巧十分有必要。咱們在編寫java程序的過程當中,常常會遇到各類莫名其妙的問題,爲了檢測程序是哪裏出現問題,常常須要增長日誌,看變量的值,這樣調試很麻煩。假設我天天花費1小時在調試個人應用程序上的話,那累積起來的話也是很大量的時間。因爲這個緣由,用這些時間來重視並瞭解全部使咱們調試更方便的功能。那能爲你省下一些時間,也將會使你的生活更安逸、輕鬆。java

首先咱們須要注意三個點:不要使用System.out.println做爲調試工具\使用一個日誌分析器來閱讀日誌\啓用全部組件的詳細的日誌記錄級別web

一個關於調試的瘋狂聲明做爲開頭。但它必須是要說的!嘗試切分一下你那複雜的邏輯成多個獨立的單元,並編寫單元測試來檢測你代碼的正確性。我想像以下這樣的流程應該是發生得很是頻繁的—-一些人經過大型web應用程序點擊、填寫多個表單、切換到不一樣的頁面、正在最後的頁面上檢測工個計算邏輯和實現這個調試視圖中的大部分邏輯。在啓動你的tomcat以前老是問你本身:有沒有方法使用一個單元測試來檢測這些行爲?你在過去這些時間能夠不知道或已忘記這些,但從如今開始,咱們將要關注一些eclipse的調試技巧,你會發現有大量的關於良好代碼設計的好東西。數據庫

Debug模式的界面,共分爲5個區域
(1)Debug(調試)區域,顯示當前正在調試代碼是什麼,在第多少行
(2)Variables(變量)區域,顯示變量的值。
(3)代碼編輯區
(4)代碼結構區,顯示代碼中的各個方法。
(5)Console(控制檯)區域。
tomcat



1、條件斷點eclipse

咱們一般調試斷點的時候通常就是點擊行號的左邊,這個時候就會有斷點被打起來。在debug視圖中,BreakPoint View將全部斷點都列出來,可是咱們能夠添加一個boolean類型的條件來決定斷點是否被跳過。若是條件爲真,在斷點處程序將中止,不然斷點被跳過,程序繼續執行。若是你只對應用中的某部分感興趣的話,這個功能很是有用。例如,若是你要在第13次循環的時候檢查程序,或者在一個抽象父類中調試某些功能,而你只關注其中一個具體的實現。你能夠在斷點視圖中設置條件,或者經過代碼旁邊的藍色斷點標記的右鍵菜單(」Breakpoint Properties」)設置。你能夠在條件代碼片斷爲true的時候暫停程序,或者當代碼片斷的值改變的時候掛起程序。工具


斷點屬性中有三個選擇,啓用「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、變量視圖測試

1變量名視圖,顯示當前代碼行中全部能夠訪問的實例變量和局部變量2.顯示全部的變量值3.能夠經過該窗口來改變變量值   spa

若是你須要在變量視圖查看一個Map對象或者List對象的值,對於eclipse的默認設置,通常並非那麼容易。假設,你使用的是HashMap,你須要點擊遍歷各個實體條目,並面臨各類HashMap的實現細節。可是,在變量視圖上面有一個叫作「Show Logical Structure」的按鈕。它很是有用,尤爲當你的對象的toString()方法所展現的信息並不友好的時候。線程

當你須要稍微更改輸入信息的時候,不須要從新開始調試會話,只需在一個表格中輸入新的信息,你能夠在調試階段直接修改你的變量的值。有寫時候,你能夠節省一些時間,你能夠經過這個功能,更加簡單的模擬一些怪異的狀況。

在選中的變量上使用Ctrl+Shift+d 或者 Ctrl+Shift+i能夠查看變量值,另外咱們還能夠在Expressions View中添加監視。



3、Display視圖

你知道「Display視圖」嗎?你能夠在調試過程當中,經過「Window」 -> 「Show View」 -> 「Display」來激活它。如今,你的eclipse應該是一個空白的新視圖。你可使用這個視圖,輸入或者演算一些新的代碼。這些代碼在當前的調試位置的上下文環境中被執行,這意味着,你可使用全部變量甚至是內容助手。要執行你的代碼的話,只需標記它,並使用右鍵菜單或者CTRL+U(執行)或者 CTRL+SHIFT+I (檢查).



4、Drop to frame

Drop to frame就是說,能夠從新跳到當前方法的開始處從新執行,而且全部上下文變量的值也回到那個時候。不必定是當前方法,能夠點擊當前調用棧中的任何一個frame跳到那裏(除了最開始的那個frame)。主要用途是全部變量狀態快速恢復到方法開始時候的樣子從新執行一遍,便可以一遍又一遍地在那個你關注的上下文中進行屢次調試(結合改變變量值等其它功能),而不用重來一遍調試到哪裏了。固然,原來執行過程當中產生的反作用是不可逆的(好比你往數據庫中插入了一條記錄)。



5、Step 過濾

咱們能夠在Preferences中添加一個過濾器,排除指定的包。


6、進入、跳過、返回

其實這個技巧是debug最基本的知識。
F5-Step Into:移動到下一步,若是當前的行是一個方法調用,將進入這個方法的第一行。(能夠經過第九條來排除)
F6-Step Over:移動到下一行。若是當前行有方法調用,這個方法將被執行完畢返回,而後到下一行。
F7-Step Return:繼續執行當前方法,噹噹前方法執行完畢的時候,控制將轉到當前方法被調用的行。
F8-移動到下一個斷點處。



總之,如今基本的調試方法基本上都分享了,什麼,你還沒聽懂,那麼請打開你的eclipse進行實際操做吧!不要一味了看博文而不去實踐,debug的使用源於生活也用了生活,再說一遍,如今來動手操做吧!

進入debug模式: 一、設置斷點 二、啓動servers端的debug模式 三、運行程序,在後臺遇到斷點時,進入debug調試狀態

相關文章
相關標籤/搜索