<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    使用 Eclipse 平臺進行調試

    本文概述了怎樣使用 Eclipse 平臺的內置調試功能來調試您的軟件項目。
    調試是程序員無法回避的工作。調試方法有許多種,但歸根結底,就是找到引發錯誤的代碼。舉例來說,在 Linux 應用程序中,分段故障被認為是最常見的錯誤之一。當程序嘗試訪問未分配給它的內存并因為分段違例而終止時,將產生這種錯誤。要修正這種錯誤,您需要找到引 發該行為的那行代碼。一旦找到有問題的代碼行,這對于知道引發錯誤的上下文及其相關的值、變量和方法也是有所幫助的。使用調試器將使查找這些信息變得相當 簡單。

    Eclipse 調試器及 Debug 視圖
    Eclipse 平臺的特色在于內置了 Java 調試器,該調試器提供所有標準調試功能,包括進行單步執行、設置斷點和值、檢查變量和值以及暫掛和恢復線程的能力。此外,您還可以調試在遠程機器上運行的 應用程序。Eclipse 平臺主要是一個 Java 開發環境,但其體系結構同時也向其它編程語言開放。如以下您將看到的,同一個 Eclipse 的 Debug 視圖也可用于 C 和 C++ 編程語言。

    Eclipse 平臺工作臺(Eclipse Platform Workbench)及其工具是基于 Java 開發工具(JDT)組件所構建的。這些組件向 Eclipse 提供以下功能:

    項目管理工具
    透視圖和視圖
    構建器、編輯器、搜索和構建功能
    調試器
    Eclipse 調試器本身是作為 Eclipse 二進制文件中包含的標準插件而存在的。Eclipse 還有一個特別的 Debug 視圖,允許您在工作臺中管理程序的調試和運行。它為調試中的每個目標顯示其暫掛線程的堆棧幀。程序中的各個線程以作為樹的節點出現,而 Debug 視圖則顯示運行中的各目標的進程。如果暫掛一個線程,則其堆棧幀顯示為子元素。

    在您開始使用 Eclipse 調試器之前,假定您已經安裝了適當的 Java SDK/JRE(我推薦您使用 Java VM 1.4)和 Eclipse 平臺 SDK 2.0/2.1,且兩者都工作正常。一般來說,先使用 Eclipse 樣本來測試一下調試選項是一個好主意。如果您要開發和調試 C/C++ 項目,您還需要得到并安裝 C/C++ 開發工具(C/C++ Development Tool,CDT)。有關 Java SDK/JRE、Eclipse 平臺和樣本以及 CDT 的鏈接,請參閱本文后面的參考資料。圖 1 顯示了 Debug 用戶界面的常規視圖。
    圖 1. Eclipse Debug 視圖用戶界面的常規視圖



    調試 Java
    在您能調試您的項目之前,需要先完整地編譯和運行代碼。您首先需要為您的應用程序創建運行配置并確認其正常啟動。之后,您需要使用 Run > Debug... 菜單,以同樣的方式設置調試配置。您還需要選擇作為主 Java 類的由調試器使用的類(也請參閱圖 2)。對一個項目,您希望有幾種調試配置就可以有幾種。當調試器啟動后(通過 Run > Debug...),會在一個新窗口打開它,您可以準備開始調試。

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

    以下是最常見的 Eclipse 調試操作的示例指示信息:

    設置斷點
    當您啟動應用程序以進行調試時,Eclipse 自動切換到 Debug 透視圖。無庸置疑,最常見的調試過程就是設置斷點,以允許檢查在條件語句和循環中的變量和值。要在 Java 透視圖的 Package Explorer 視圖中設置斷點,雙擊所選的源代碼文件,在編輯器中打開它。遍歷全部代碼,將光標放置在含有可疑代碼的那一行的標記欄上(在編輯器區域的左側)。雙擊以設 置斷點(也請參閱圖 3)。

    圖 3. 在編輯器左側邊緣可看到兩個斷點標記

    現在通過 Run > Debug... 菜單啟動調試會話。有一點很重要,不要把數條語句放在同一行,因為您不能在同一行的多條語句上單步跳過或設置行斷點(也請參閱圖 4)。

    圖 4. 視圖通過左側邊緣的箭頭指出當前正在執行的行


    條件斷點
    一旦您找到出錯的地方,您會想要了解在崩潰前程序在干些什么。完成該工作的一種方法是單步執行程序中的每條語句,一次一句,直到到達出問題的地 方。有時候更好的方法是僅運行某段代碼并在出問題的地方終止其執行,這樣就可以檢查該位置上的數據。要實現這一點,可能要聲明每當表達式的值更改時就被觸 發的條件斷點(請參閱圖 5)。此外,在輸入條件表達式時還可以使用代碼輔助。

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


    對表達式求值
    要在 Debug 透視圖的編輯器中求表達式的值,選中設置有斷點的一整行,并在上下文菜單中選擇 Inspect 選項(請參閱圖 6)。表達式是在當前堆棧幀的上下文中求值的,其結果顯示在 Display 窗口的 Expressions 視圖中。

    圖 6. 用 Inspect 選項求表達式的值


    查看變量
    Variables 視圖(在 Display 窗口中)顯示了選中的堆棧幀中的變量值(請參閱圖 7)。要查看所請求的變量,只需展開 Variables 視圖中的樹直到您看到所請求的元素為止。您也可以在 Debug 視圖中單步執行代碼的同時,在 Variables 視圖中查看變量。

    圖 7. 在 Display 窗口中查看變量


    當調試器在斷點上停止時,您可以通過在 Run > Debug... 菜單上選擇 Step Over 選項來繼續調試器會話(請參閱圖 8)。這將單步跳過突出顯示的代碼行并執行同一個方法中的下一行(或者它在調用當前方法的方法中繼續)。作為最后一步的結果而發生更改的變量用顏色突出顯 示(缺省值是紅色),所用顏色可在“Changed Variable Value Color”首選項(由 Debug Variable Views 指定)中指定。

    圖 8. Run... 菜單中的調試器命令

    要在 Debug 視圖中暫掛線程的執行,選擇一個運行中的線程并單擊 Debug 視圖工具欄中的 Suspend 按鈕。會顯示該線程的當前調用堆棧,并且在 Debug 透視圖的編輯器中突出顯示當前執行的行。

    暫掛線程時,將光標放置到 Java 編輯器中的變量上,該變量的值顯示在一個小懸浮窗口中。同樣,該線程的頂部堆棧幀被自動選中,該堆棧幀中的可視變量顯示在 Variables 視圖中。可以通過在 Variables 視圖中單擊變量名來檢查相應的變量。

    熱交換錯誤修正:實時代碼修正
    如果您運行的是 JVM 1.4(Java 虛擬機,Java Virtual Machine),Eclipse 2.0.2 和 2.1 提供一個叫做熱交換錯誤修正(Hotswap Bug Fixing)的新功能(無法用于 JVM 1.3 或更低版本 - 也請參閱圖 9)。它允許在調試器會話過程中更改源代碼,這要比“退出應用程序,更改源代碼,重新編譯,再啟動另一個調試會話”的一系列步驟好多了。要使用該功能,只 需在編輯器中更改代碼并恢復調試。由于 JVM 1.4 與 Java 平臺調試器體系結構(Java Platform Debugger Architecture,JPDA)兼容,所以能使用該功能。JPDA 實現了在運行中的應用程序中用經過修改的代碼進行替換的能力。當然,當啟動您的應用程序或找到出錯點需要花費很長時間的時候,該功能極其有用。

    圖 9. 熱交換錯誤修正功能不能在 JVM 1.3 及更低版本中使用


    如果您完成調試時程序還沒有被完整地執行過,請在 Debug 視圖中的上下文菜單中選擇 Terminate 選項。一個常見的錯誤是您在調試器會話中使用了 Debug 或 Run 而不是 Resume。這樣將會啟動另一個調試器會話,而不是繼續當前的會話。

    遠程調試
    Eclipse 調試器提供了一個有趣的選項,可用于調試遠程應用程序。它可以連接到一個運行 Java 應用程序的遠程 VM 上,并將其連接到內部調試器上。處理遠程調試會話非常類似于本地調試。不過,遠程調試配置要求對 Run > Debug... 窗口進行不同的設置。您首先要選擇左側視圖中的 Remote Java Application 項,單擊 New 按鈕。這樣就創建了一個新的遠程啟動配置,并顯示三個選項卡:Connect、Source 和 Common。

    在 Connect 選項卡的 Project 域中,選擇用作啟動首選項的項目(用于查找源代碼)。在 Connect 選項卡的 Host 域中,輸入運行 Java 程序的遠程主機的 IP 地址或域名。在 Connect 選項卡的 Port 域中,輸入遠程 VM 接受連接的端口。一般來說,該端口是在遠程 VM 啟動時指定的。當您想讓調試器確定 Terminate 命令在遠程會話中是否可用,可以選擇 Allow termination of remote VM 選項。如果您希望能終止所連接的 VM,則選擇該選項。現在當您選擇 Debug 選項時,調試器將嘗試按指定的地址和端口連接遠程 VM,并在 Debug 視圖中顯示結果。

    如果啟動器無法連接至指定位置上的 VM,將顯示錯誤消息。一般來說,遠程調試功能的可用性完全取決于遠程主機上運行的 Java VM(虛擬機,Virtual Machine)。圖 10 顯示了遠程調試會話的連接屬性的設置。

    圖 10. 設置遠程調試會話的連接屬性


    調試其它語言
    Java 是 Eclipse 平臺的主語言。然而,Eclipse 平臺同時也是一個可支持許多其它語言的可擴展平臺,而其中最重要的就是支持 C/C++(因為其流行性)。Eclipse 通過用 C/C++ 開發工具(CDT)支持 C/C++。請參閱參考資料以獲取相關鏈接。CDT 通過調試 C/C++ 代碼的功能擴展了標準的 Eclipse Debug 視圖,同時 CDT Debug 視圖允許您在工作臺中管理 C/C++ 項目的調試。CDT 不包含其內部調試器,但它向必須可在本地使用的 GNU GDB 調試器提供了一個前端。

    下載并安裝了 CDT 之后,只需切換到 Debug 視圖,您就可以開始調試當前的 C/C++ 項目了(請參閱參考資料,以獲取一篇介紹如何安裝 CDT 的文章的鏈接)。這樣您可以設置(并在執行過程中任何時候更改)代碼中的斷點,并且跟蹤變量和寄存器。Eclipse 調試器顯示您調試中各個目標的暫掛線程的堆棧幀。程序中的各個線程作為樹的節點出現。它顯示了運行中各目標的進程。請記住當 GNU GDB 調試一個帶有調試符號鏈接的程序時,它最有效。這是在編譯過程中由命令行參數 -g 來實現的。需要更多的信息請使用 -ggdb 開關,該參數包含有特定于 GNU GDB 的調試符號。

    如果您要調試 servlet,使用 Sysdeo Eclipse Tomcat Launcher。該插件使您能夠管理 Tomcat 4.x/3.3 servlet 容器(通過創建和導入一個 Tomcat WAR 項目)。它同時在一個內部 Java Eclipse 調試器中注冊一個 Tomcat 進程,這樣您就能方便地調試 Tomcat 應用程序了。還有其它幾個 Eclipse 插件,使我們能夠對 servlet 使用內部 Eclipse 調試器,比如 Cactus 的 Eclipse 插件,Resin 插件和 X-Parrots ServletExec 插件。在下面的參考資料中可獲得這些插件的鏈接。

    結束語
    Eclipse 平臺提供了內置的 Java 調試器,該調試器具有標準調試功能,包括進行單步執行、設置斷點和值、檢查變量和值以及暫掛和恢復線程的能力。它還可以用于調試在遠程機器上運行的應用程 序。Eclipse 平臺主要是一個 Java 開發環境,但是同一個 Eclipse 的 Debug 視圖也可用于 C 和 C++ 編程語言。

    posted on 2006-02-27 23:40 Vincent.Chen 閱讀(291) 評論(0)  編輯  收藏 所屬分類: Eclipse

    主站蜘蛛池模板: 亚洲国产精品人久久电影| 亚洲AV人人澡人人爽人人夜夜| 亚洲人成免费网站| 最近2019中文字幕免费大全5| 亚洲伦另类中文字幕| 亚洲精品免费在线观看| 日本久久久久亚洲中字幕| 日本在线看片免费人成视频1000| 亚洲国产日韩一区高清在线| 99精品视频在线观看免费专区| 91精品国产亚洲爽啪在线观看| 18级成人毛片免费观看| 亚洲免费在线观看视频| 成全高清视频免费观看| 亚洲av无码专区在线观看亚 | 免费在线看v网址| 国产精品亚洲午夜一区二区三区| 一二三四免费观看在线视频中文版 | 亚洲AV无码国产在丝袜线观看| 野花香高清视频在线观看免费| 亚洲五月激情综合图片区| 天天影院成人免费观看| 亚洲欧美国产国产一区二区三区| 全部免费毛片免费播放| 中文字幕在线免费视频| 亚洲美女视频免费| 成人免费无码精品国产电影| 国产成人自产拍免费视频| 亚洲免费视频网站| 日本高清免费中文字幕不卡| 国产特黄一级一片免费| 亚洲成人免费网址| 免费一看一级毛片全播放| 免费黄网站在线看| 亚洲AV香蕉一区区二区三区| 亚洲毛片αv无线播放一区| 国产卡一卡二卡三免费入口| 日韩精品免费一线在线观看| 亚洲欧洲日产专区| 亚洲欧洲日产国码高潮αv| 久视频精品免费观看99|