★ Eclipse Debug 介面應用詳解——Eclipse Debug不為人知的秘密

來源:互聯網
上載者:User
今天瀏覽csdn,發現一文詳細的描述了Eclipse Debug中的各個知識點,非常詳盡。特此記錄。 Eclipse Debug不為人知的秘密 http://blog.csdn.net/mgoann/article/details/7239492 Debug視圖

認識debug視圖,紅色部分框為線程堆棧視圖,黃色部分框為運算式、斷點、變數視圖,藍色部分為程式碼檢視。
 線程堆棧視圖

分別介紹一下這幾個按鈕的含義:

1.表示當前實現繼續運行直到下一個斷點,快速鍵為F8。

2.表示打斷整個進程

3.表示進入當前方法,快速鍵為F5。

4.表示運行下一行代碼,快速鍵為F6。

5.表示退出當前方法,返回到調用層,快速鍵為F7。

6.表示當前線程的堆棧,從中可以看出在運行哪些代碼,並且整個調用過程,以及程式碼號



  變數視圖

1.為變數名視圖,顯示當前程式碼中所有可以訪問的執行個體變數和局部變數

2.顯示所有的變數值

3.可以通過該視窗來改變變數值



  斷點視圖

1.顯示所有斷點

2. 將當前視窗1中選中的連接埠失效,再次點擊啟用。

3.異常斷點



  運算式視圖

運算式視圖:運算式視圖是Debug過程中較為常用的一個視圖,可以對自己的感興趣的一些變數進行觀察,也可以增加一些自己的運算式,也可以查看一行代碼的運行結果。

1.運算式

2. 點擊此可以新增一個運算式



  程式碼檢視

程式碼檢視:用來顯示具體的代碼。其中綠色部分是指當前將要執行的代碼

 

 

情境一:小明辛苦了兩天終於將自己的負責的任務完成了,第二天轉測後,測試找到了小明說,小明的程式有bug,可以是小明經過仔細調試,發現本地沒有任何問題,但是測試的環境上確實有問題,所以小明遇到了難題,測試的環境linux,又不能上去linux去debug,小明這個時候想要是Linux也可以debug就好了. 遠程debug

遠程debug:遠程debug顧名思義,能夠將遠程作業系統上的任何java進行debug,但是有前提是本地需要有同步的代碼。

1.遠程debug的步驟是在遠程作業系統上啟動java進程時增加特殊的

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n

2.在Eclipse中建立一個Remote Java Application 遠程debug

1.開啟Debug Configurations視圖

2.右擊Remote Java Application,

New

3.選擇源碼工程

4.輸入遠程IP和連接埠,連接埠即服務

端的$DEBUG_PORT,點擊OK。
  

情境一:小明寫了一個任務執行者,該執行者不間斷的執行一些任務,在現網上運行了一段時間後,發現有機率的出現一些故障,發現運行一段時間後,該任務者異常退出了,退出的因為是null 指標,可以小明想要在本地debug,不知道斷點打在哪裡,該問題是機率事件,不一定會出現,所以小明debug幾遍下來後,頭暈眼花,連代碼都看不清楚了,小明想要是能有個斷點每當出現null 指標異常的時候就停下來讓他發現問題,那該多好呀。 異常斷點

異常斷點:在定位問題的過程中,常常會遇到斷點無法打到合適的位置,以至於和問題的觸發點千差萬別,所以這個時候不妨試試異常斷點,顧名思義,異常斷點是指拋出某種異常後自動掛起的斷點。

點擊紅色部位,增加一個異常斷點



 

輸入想要定位的異常類型,例如NullPointerException,這樣系統中拋出任何NullPointerException異常後,都會掛起當前線程,給你機會去定位問題。  

情境一:小明寫了一個巨大的迴圈,在調測代碼時,小明發現每當迴圈到第100000次的時候,就是出現問題,沒有達到自己的預期,於是小明在迴圈裡打了個斷點,想看看到底怎麼回事,可小明萬萬沒有想到,想要到達100000次迴圈是多麼的困難,小明這個時候已經開始浮想聯翩,如果能有這樣的斷點:

             If 迴圈次數== 100000,線程停下來 條件斷點

如右圖,迴圈1000次,如果想要在迴圈到500

次的時候停下來,可以建立一個條件斷點,右

擊斷點懸著Breakpoint Properties。



 

選中Enable Condition

在空白處,添加你自己的條件,如果條件返回true,線程會被掛起,如果為false,則忽略該異常

Hit Count為該斷點經過多少次後,正式掛起線程,如果設定為500,則表達前499次,經過該斷點都不會停下,當第500次,該斷點會掛起當前線程。  

  運算式

運算式可以查看一些在當前代碼中沒有的命令列,方便定位問題。  

情境一:小明最近遇到一個難題,在調用一個第三方外掛程式時總是會有問題,小明懷疑是第三方外掛程式的bug,但小明沒有找到源碼不能進行debug,小明該怎麼辦呢。 Debug定位第三方外掛程式的問題

1.使用反編譯工具將代碼反編譯

2.將反編譯後的源碼進行過濾

3.修複源碼編譯錯誤

4.進行debug Debug一些經驗

1.盡量減少debug,少用debug,優秀的程式員總是花80%的時間來思考如何解決問題,20%的時間來動手完成代碼,而糟糕的程式員總是用20%的時間去寫代碼,80%的時間去調試代碼,動手之前盡量想好如何去做,並且已經為你自己的思路做了充分的實驗。

2.儘可能的提高debug的效率,設定合適的斷點,使用快速鍵。

3.debug的F6快速鍵經常用到,它與金山詞霸的快速鍵衝突,所以在debug的時候最好將金山詞霸關掉。

4.debug的運算式是可執行代碼,將會對代碼結果產生永久性影響,在調試時注意,經常將不用的運算式清除掉。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.