使用 Eclipse 平臺進行調試 及快捷鍵

本文轉自 v522zy 的blog  http://hi.baidu.com/v522zy/blog/item/6c2eb618143a310235fa4145.htmlhtml

這本是IBM上的一篇關於Eclipse debug的文章,原做者是 「Pawel Leszek 最初於 2003 年 5 月撰寫了下文,後來由 Chris Aniszczyk 於 2007 年 4 月進行了更新。」 http://www.ibm.com/developerworks/cn/opensource/os-ecbug/index.html?S_TACT=105AGX52&S_CMP=techcto#Resourcesjava

而v522zy加入了自身的總結和快捷鍵部分,我是在他的blog上看到本文。感謝他們所作的工做!編程

 

 Eclipse 調試器和 Debug 視圖 多線程

Eclipse SDK 是針對 Java™ 開發工具(Java™ Development Tools,JDT)的項目,它具備一個內置的 Java 調試器,能夠提供全部標準的調試功能,包括分步執行、設置斷點和值、檢查變量和值、掛起和恢復線程的功能。除此以外,還能夠調試遠程機器上運行的應用程 序。Eclipse 平臺很健壯,由於其餘編程語言能夠將該平臺提供的調試工具用於各自的語言運行時。正以下文所示,同一個 Eclipse Debug 視圖也能夠用於 C/C++ 編程語言。架構

Eclipse 平臺工做臺及其工具是圍繞 JDT 組件構建的,該組件爲 Eclipse 提供了下列特性:框架

  • 項目管理工具
  • 透視圖和視圖
  • 構造器、編輯器、搜索和構建功能
  • 調試器

Eclipse 調試器自己是 Eclipse 內的一個標準插件集。Eclipse 還有一個特殊的 Debug 視圖,用於在工做臺中管理程序的調試或運行。它能夠顯示每一個調試目標中掛起線程的堆棧框架。程序中的每一個線程都顯示爲樹中的一個節點,Debug 視圖顯示了每一個運行目標的進程。若是某個線程處於掛起狀態,其堆棧框架顯示爲子元素。編程語言

在使用 Eclipse 調試器以前,假定您已經安裝了合適的 Java SDK/JRE(我推薦使用 Java VM V1.4)和 Eclipse Platform SDK V3.3,並且二者的運行都沒問題。通常來講,先用 Eclipse 示例測試一下調試選項比較好。若是想開發和調試 C/C++ 項目,還須要得到並安裝 C/C++ 開發工具(C/C++ Development Tools,CDT)。關於 Java SDK/JRE、Eclipse 平臺和示例以及 CDT,請參閱 參考資源。 圖 1 顯示了 Debug 透視圖的通常視圖。編輯器


圖 1. Eclipse Debug 透視圖的通常視圖
Eclipse Debug 透視圖的通常視圖

工具

調試 Java 語言程序開發工具

在能夠調試項目前,須要乾淨地編譯和運行代碼。首先,須要爲應用程序建立一個運行配置,確保應用程序能夠正確啓動。而後,須要經過 Run > Debug 菜單以相似的方式設置調試配置。還須要選擇一個類,將它做爲調試的主 Java 類來使用(請參見圖 2)。您能夠按照本身的意願爲單個項目設置多個調試配置。當調試器啓動時(從 Run > Debug),會在一個新的窗口中打開,這時就能夠開始調試了。


圖 2. 在調試配置中設置項目的主 Java 類
在調試配置中設置項目的主 Java 類

接下來,將討論 Eclipse 中的一些經常使用調試實踐。

設置斷點

在 啓動應用程序進行調試時,Eclipse 會自動切換到 Debug 透視圖。毫無疑問,最多見的調試步驟是設置斷點,這樣能夠檢查條件語句或循環內的變量和值。要在 Java 透視圖的 Package Explorer 視圖中設置斷點,雙擊選擇的源代碼文件,在一個編輯器中打開它。遍歷代碼,將鼠標放在可疑代碼一行的標記欄(在編輯器區域的左側)上,雙擊便可設置斷點。


圖 3. 編輯器左側看到的兩個斷點
編輯器左側看到的兩個斷點

如今,從 Run > Debug 菜單啓動調試會話。最好不要將多條語句放在一行上,由於會沒法單步執行,也不能爲同一行上的多條語句設置行斷點。


圖 4. 視圖中左側空白處的箭頭指示當前正在執行的行
視圖中左側空白處的箭頭指示當前正在執行的行

還有一個方便的斷點視圖來管理全部的斷點。


圖 5. 斷點視圖
斷點視圖

條件斷點

一 旦瞭解到錯誤發生的位置,您可能想要知道在程序崩潰以前,程序在作什麼。一種方法就是單步執行程序的每行語句。一次執行一行,直到運行到可疑的那行代碼。 有時,最好只運行一段代碼,在可疑代碼處中止運行,在這個位置檢查數據。還能夠聲明條件斷點,它在表達式值發生變化時觸發(請參見圖 6)。除此以外,在輸入條件表達式時,也可使用代碼幫助。


圖 6. 設置條件斷點觸發器
設置條件斷點觸發器

計算表達式的值

爲了在 Debug 透視圖的編輯器中計算表達式的值,選擇設置了斷點的那行代碼,在上下文菜單中,經過 Ctrl+Shift+I 或右鍵單擊您感興趣的變量(參見圖 7)選擇 Inspect 選項。在當前堆棧框架的上下文中會計算表達式的值,在 Display 窗口的 Expressions 視圖中會顯示結果。


圖 7. 經過 Inspect 選項計算表達式的值
經過 Inspect 選項計算表達式的值

剪切活動代碼

Display 視圖容許您以剪切類型的方式處理活動代碼(參見圖 8)。要處理一個變量,在 Display 視圖中輸入變量名便可,視圖會提示您一個熟悉的內容助手。


圖 8. Display 視圖
The Display view

當 調試器中止在一個斷點處時,您能夠從 Debug 視圖工具欄(參見圖 9)中選擇 Step Over 選項,繼續調試器會話。該操做會越太高亮顯示的那行代碼,繼續執行同一方法中的下一行代碼(或者繼續執行調用當前方法的那個方法的下一行代碼)。執行上一 步後發生改變的變量會用某種顏色高亮顯示(默認是黃色)。顏色能夠在調試首選項頁面中改變。


圖 9. 改變顏色的變量
改變顏色的變量

要在 Debug 視圖中掛起執行線程,選擇一個運行線程,單擊 Debug 視圖工具欄中的 Suspend。 該線程的當前調用堆棧就會顯示出來,當前執行的代碼行就會在 Debug 透視圖中的編輯器中高亮顯示。掛起一個線程時,將鼠標放在 Java 編輯器中的變量上,該變量的值就會在一個小的懸停窗口中顯示出來。此時,該線程的頂部堆棧框架也會自動選中,其中的可視變量也會在 Variables 視圖中顯示出來。您能夠經過單擊 Variables 視圖中合適的變量名來檢查變量。

熱交換錯誤修正:動態代碼修正

如 果運行的是 Java 虛擬機(Java Virtual Machine,JVM)V1.4 或更高的版本,Eclipse 支持一個叫作熱交換錯誤修正(Hotswap Bug Fixing)的功能,JVM V1.3 或更低的版本不支持該功能。該功能容許在調試器會話中改變源代碼,這比退出應用程序、更改代碼、從新編譯、而後啓動另外一個調試會話更好。要利用該功能,在 編輯器中更改代碼後從新調試便可。因爲 JVM V1.4 與 Java 平臺調試器架構(Java Platform Debugger Architecture,JPDA)兼容,因此纔有可能具有該功能。JPDA 實現了在運行的應用程序中替換通過修改的代碼的功能。若是應用程序啓動時間較長或執行到程序失敗的地方時間很長,那麼這一點特別有用。

若是在完成調試時,程序尚未所有執行一遍,在 Debug 視圖的上下文菜單中選擇 Terminate 選項。容易犯的一個錯誤是在調試器會話中使用 Debug 或 Run,而不是 Resume。這樣作會啓動另外一個調試器會話,而不是繼續當前會話。

來源於 IBM;



1.Step Into (also F5) 跳入2.Step Over (also F6) 跳過3.Step Return (also F7) 執行完當前method,而後return跳出此method4.step Filter 逐步過濾 一直執行直到遇到未通過濾的位置或斷點(設置Filter:window-preferences-java-Debug-step Filtering)5.resume 從新開始執行debug,一直運行直到遇到breakpoint。    例如 :A和B兩個斷點,debug過程當中發現A斷點已經無用,去除A斷點,運行resume就會跳過A直接到達B斷點。6.hit count 設置執行次數 適合程序中的for循環(設置 breakpoint view-右鍵hit count)7.inspect 檢查 運算。執行一個表達式顯示執行值8.watch 實時地監視對象、方法或變量的變化9.咱們常說的斷點(breakpoints)是指line breakpoints,除了line breakpoints,還有其餘的斷點類型:field(watchpoint)breakpoint,method breakpoint ,exception breakpoint.10.field breakpoint 也叫watchpoint(監視點) 當成員變量被讀取或修改時暫掛11.添加method breakpoint 進入/離開此方法時暫掛(Run-method breakpoint)12.添加Exception breakpoint 捕抓到Execption時暫掛(待續...)斷點屬性:   1.hit count 執行多少次數後暫掛 用於循環   2.enable condition 遇到符合你輸入條件(爲ture\改變時)就暫掛   3.suspend thread 多線程時暫掛此線程   4.suspend VM 暫掛虛擬機13.variables 視圖裏的變量能夠改變變量值,在variables 視圖選擇變量點擊右鍵--change value.一次來進行快速調試。14.debug 過程當中修改了某些code後--〉save&build-->resume-->從新暫掛於斷點15.resume 當debug調試跑出異常時,運行resume,從新從斷點開始調試16.若是一行有不少方法,當第一次按F5鍵就跳入這一行第一個方法,F6一步一步調試,F7跳出這方法.當第二次按F5鍵就跳入這一行第二個方法,F6一步一步調試,F7跳出這方法.以此類推.想進入這一行第幾個方法,就按幾回F5和F7.

相關文章
相關標籤/搜索