使用Eclipse調(diào)試Java程序代碼
原創(chuàng)【51CTO獨家特稿】創(chuàng)建Java項目
當Eclipse首次啟動時進入的是資源透視圖,在這個透視圖中可以管理項目、文件夾、文件和其它資源,按照Eclipse的說法,這些面板叫做視圖,一套完整的視圖叫做透視圖,在資源透視圖中,你可以使用左上方的視圖(導(dǎo)航視圖)導(dǎo)航和創(chuàng)建資源。
在Eclipse中做事之前,如創(chuàng)建Java程序,需創(chuàng)建一個Java項目,創(chuàng)建Java項目的步驟如下:
1、在導(dǎo)航視圖上點擊右鍵,在彈出的上下文菜單中選擇新建項目;
2、在新建項目對話框中,Eclipse提供了項目選項:Java,插件開發(fā)等。因此你想要創(chuàng)建一個Java項目,在對話框左邊選擇Java;
3、在對話框右邊選擇Java項目,如果你還安裝了其它Java插件開發(fā)包,在這里也會一起列出來(如EJB,Servlet等),Eclipse默認安裝的JDT僅支持標準Java應(yīng)用程序,因此你必須選擇Java項目選項;
4、點擊下一步進入新建項目向?qū)υ捒颍?/P>
5、首先給項目命一個名字,因為是一個簡單的“Hello, world”例子,因此這里我輸入“Hello”,點擊下一步,設(shè)置構(gòu)建Java項目的設(shè)置選項,對于這個項目你不需要做任何修改即可;
6、點擊完成;
7、Eclipse此時會提示你這種項目是和Java透視圖關(guān)聯(lián)的,并詢問你是否切換到Java透視圖,選擇是。
創(chuàng)建Java類
當你創(chuàng)建好Java項目后就可以開始創(chuàng)建Java程序了,盡管不是非得這么做,但這樣可以將你的Java類組織到包中,這是一次很好的實踐,通常使用域名做為包名,這樣可以減少名字沖突的可能性,如果你沒有注冊域名,也可以使用任何方便的,唯一的hoc名,我在這里使用org.eclipseguide,項目名是hello,因此包的全名就是org.eclipseguide.hello。
按照下列步驟創(chuàng)建Java程序:
1、在項目上點擊右鍵,選擇New.Class彈出新建Java類向?qū)В?/P>
2、第一個字段區(qū)域“源文件夾”默認是項目的文件夾,保持默認值;
3、在包字段區(qū)域輸入org.eclipseguide.hello;
4、在類名字段區(qū)域輸入HelloWorld;
5、在“Which Method Stubs Would You Like to Create?”區(qū)域下,選中public static void main(String[] args),新建Java類的對話框如圖1所示。
圖- 1 使用新建Java類向?qū)?chuàng)建HelloWorld類
6、點擊完成,新建java類向?qū)槌绦虬鼊?chuàng)建一系列目錄,HelloWorld.java源文件將會放在這個包名下面。
自動創(chuàng)建的代碼包括一個main( )方法,你可以向里面添加任何功能,如打印你的Hello, world!,為了使調(diào)試變得更有趣,你需要添加一個循環(huán)打印的方法,在Eclipse中修改自動生成的代碼,如下:
public class HelloWorld { |
運行Java程序
現(xiàn)在你已經(jīng)可以運行這個Java程序了,在運行Java程序時需要考慮多個事情,包括Java運行環(huán)境,是否需要命令行參數(shù),如果不知一個類有main( )函數(shù)究竟該使用哪一個,在Eclipse中正確啟動一個Java程序的方法是從Eclipse菜單中選擇“運行運行”,此時會彈出一個對話框,讓你配置啟動選項,在運行一個Java程序前,你需要創(chuàng)建一個啟動配置或從現(xiàn)有配置中選擇一個。
對于大多數(shù)簡單的Java程序而言,你不需要指定啟動配置,因此你可以使用更簡單的方法啟動程序,首先確保編輯器中HelloWorld源代碼是全部選中的,然后:
1、從Eclipse菜單中選擇運行以...運行Java應(yīng)用程序;
2、因為你已經(jīng)對Java程序做出了修改,Eclipse會提示你在運行Java程序前先保存一下,點擊確定;
3、任務(wù)視圖切換到控制臺視圖,顯示程序輸出,如圖2所示。
圖- 2 Eclipse控制臺視圖顯示HelloWorld程序運行輸出
你可能疑惑為什么沒有單獨的步驟將.java文件編譯成.class文件,這是因為Eclipse JDT包含了一個增量的編譯器來評估你輸入的Java程序代碼,它可以高亮顯示語法錯誤和不完整的引用,和其它Eclipse友好的特性一樣,如果你覺得這個功能對你沒用,你完全可以關(guān)閉它,如果編譯成功,.class文件會在保存源文件時同步保存。
調(diào)試Java程序
在Eclipse中交互式運行代碼是其最強大的特性之一,使用JDT調(diào)試器,你可以逐行執(zhí)行你的Java程序,檢查程序不同位置變量的值,這個過程在定位代碼中的問題時非常有用。
為了準備調(diào)試,你需要在代碼中設(shè)置一個斷點先,以便讓調(diào)試器暫停執(zhí)行允許你調(diào)試,否則,程序會從頭執(zhí)行到尾,你就沒有機會調(diào)試了。為了設(shè)置一個斷點,在編輯器左邊灰色邊緣雙擊,這里將say()函數(shù)位置設(shè)置為斷點,此時將會顯示一個藍色的小點,表示一個活動的斷點。
在調(diào)試器下運行程序和運行它非常類似,Eclipse提供了兩個選項:選擇“使用全方位服務(wù)運行調(diào)試”菜單使用一個快捷配置,如果默認選項正確,也可以選擇“運行以...調(diào)試Java應(yīng)用程序”。在這里我們使用后者。
確保編輯器中的HelloWorld代碼被全部選中了,然后從主菜單中選擇“運行以...調(diào)試Java應(yīng)用程序”,Eclipse將會啟動程序,切換到調(diào)試透視圖,在斷點暫停執(zhí)行,如圖3所示。
圖- 3 調(diào)試HelloWorld:在第一個斷點執(zhí)行被暫停
調(diào)試透視圖包括多個新的視圖,都是用于調(diào)試使用的,首先,在左上方是調(diào)試視圖(不要和調(diào)試透視圖混淆了),它顯示了所有調(diào)用堆和當前所有線程的狀態(tài),包括所有已經(jīng)執(zhí)行完畢的線程,程序運行到斷點位置時,狀態(tài)顯示為暫停。
單步調(diào)試代碼
調(diào)試視圖的標題欄是一個讓你可以控制Java程序執(zhí)行的工具欄,前面幾個按鈕和電子設(shè)備,如CD播放器的控制按鈕風格非常類似,允許你暫停、繼續(xù)和終止程序,這些按鈕讓你可以一行一步地執(zhí)行程序代碼,鼠標移動到每個按鈕上時都會顯示按鈕提示信息,如跟蹤,單步,返回等。
如第二個按鈕跟蹤,當前執(zhí)行的程序代碼在編輯器中處于高亮狀態(tài):調(diào)用say()函數(shù)。如果跟蹤的話就會進入這個函數(shù)內(nèi)部,點擊跟蹤后,高亮的行是首先執(zhí)行的行 — for語句。
一般情況下,你只想跟蹤你自己寫的類,對于標準類和第三方類通常沒有什么問題,是不需要跟蹤的,這時候可以使用過濾后跟蹤功能,即Step With Filters,選擇Window.Preferences.Java.Debug.Step過濾器,然后選擇列出的包和類,多花點時間設(shè)置過濾器可以有效減輕調(diào)試難度,當你使用普通的跟蹤調(diào)試功能時經(jīng)常會遇到許多未知錯誤,這時使用過濾跟蹤就能很好解決這一問題。
評估變量和表達式
調(diào)試視圖的右邊是一個標簽視窗包含視圖,在這里你可以檢查和修改變量和斷點,選擇變量標簽頁,這個視圖顯示了當前范圍的變量及其值,在進入for循環(huán)之前,這個視圖僅包括say()函數(shù)的msg參數(shù)及其值,單機單步或跟蹤按鈕進入for循環(huán),變量視圖將會顯示循環(huán)標志i及其值0。
有時一個Java程序有許多變量,但你僅對其中一個或幾個感興趣,為了監(jiān)視選擇的變量和表達式,你可以將它們添加到表達式視圖中的監(jiān)視列表中,例如,選擇一個變量i(在編輯器中雙擊它),點擊右鍵,從彈出的右鍵菜單中選擇監(jiān)視,這個變量(及其值)就會顯示在表達式視圖中。
監(jiān)視變量的一個好處是你可以檢查對象和它們的值的詳細信息,并且可以修改它們的值。返回到變量視圖,展開msg變量顯示它的屬性,它是一個char數(shù)組,展開msg字符串可以顯示它的值,例如,雙擊H,會提示你輸入一個新值,如J。
在同一個標簽視窗中的是顯示視圖,它允許你輸入任何允許的變量或包括這些變量的實例表達式,選擇顯示視圖然后輸入:
msg.charAt(i)
為了快速評估這個表達式,你必須先選中它,然后點擊第二個顯示視圖工具按鈕(顯示所選文本評估結(jié)果),它在顯示視圖中顯示結(jié)果,通常最好點擊第一個工具按鈕(檢查所選文本評估結(jié)果),因為它添加表達式到表達式視圖中,不管使用哪種方法,當表達式中的變量發(fā)生變化時,顯示的值都不回自動更新。但在表達式視圖中,你可以講表達式轉(zhuǎn)為監(jiān)視表達式,當你單步調(diào)試代碼時就會自動更新,切換到表達式視圖,注意檢查按鈕顯示下一個表達式,點擊表達式然后從彈出的上下文菜單中選擇轉(zhuǎn)換成監(jiān)視表達式,下一個表達式圖標將會變成監(jiān)視圖標。
我們還是回到單步調(diào)試代碼中,你前面在調(diào)用System.out.println()時留下了游標,如果你想查看System.out.println()的代碼,你可以點擊跟蹤,否則就點擊單步執(zhí)行System.out.println()函數(shù),開始下一個for循環(huán)。
在編輯器下方是連一個標簽視窗,包括控制臺視圖,程序輸出就顯示在這里,如果你象前面說的那樣將H改為J了,那這里將會顯示Jello, world!。你也可以點擊單步執(zhí)行,直到循環(huán)終止,如果你覺得這個過程太過冗長,也可以點擊返回快速結(jié)束say()函數(shù)返回到main()函數(shù),或者點擊繼續(xù)按鈕讓Java程序運行到終點。
小結(jié)
Eclipse最有用的特性之一就是它集成的調(diào)試器,它可以交互式執(zhí)行代碼,通過設(shè)置斷點,逐行執(zhí)行代碼,檢查變量和表達式的值等功能反應(yīng)其強大的功能,它是一款檢查和修復(fù)Java程序代碼問題的不可替代的工具。
您正在閱讀的是“使用Eclipse調(diào)試Java程序代碼”
【編輯推薦】