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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計

    積分與排名

    網(wǎng)站

    最新評論

    使用 Eclipse 平臺進行調(diào)試

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

    Eclipse 調(diào)試器及 Debug 視圖
    Eclipse 平臺的特色在于內(nèi)置了 Java 調(diào)試器,該調(diào)試器提供所有標(biāo)準(zhǔn)調(diào)試功能,包括進行單步執(zhí)行、設(shè)置斷點和值、檢查變量和值以及暫掛和恢復(fù)線程的能力。此外,您還可以調(diào)試在遠程機器上運行的 應(yīng)用程序。Eclipse 平臺主要是一個 Java 開發(fā)環(huán)境,但其體系結(jié)構(gòu)同時也向其它編程語言開放。如以下您將看到的,同一個 Eclipse 的 Debug 視圖也可用于 C 和 C++ 編程語言。

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

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

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



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

    圖 2. 在調(diào)試配置中設(shè)置項目的主 Java 類

    以下是最常見的 Eclipse 調(diào)試操作的示例指示信息:

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

    圖 3. 在編輯器左側(cè)邊緣可看到兩個斷點標(biāo)記

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

    圖 4. 視圖通過左側(cè)邊緣的箭頭指出當(dāng)前正在執(zhí)行的行


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

    圖 5. 設(shè)置條件斷點觸發(fā)器


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

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


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

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


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

    圖 8. Run... 菜單中的調(diào)試器命令

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

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

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

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


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

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

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

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

    圖 10. 設(shè)置遠程調(diào)試會話的連接屬性


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

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

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

    結(jié)束語
    Eclipse 平臺提供了內(nèi)置的 Java 調(diào)試器,該調(diào)試器具有標(biāo)準(zhǔn)調(diào)試功能,包括進行單步執(zhí)行、設(shè)置斷點和值、檢查變量和值以及暫掛和恢復(fù)線程的能力。它還可以用于調(diào)試在遠程機器上運行的應(yīng)用程 序。Eclipse 平臺主要是一個 Java 開發(fā)環(huán)境,但是同一個 Eclipse 的 Debug 視圖也可用于 C 和 C++ 編程語言。

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

    主站蜘蛛池模板: 日韩中文字幕免费| 亚洲好看的理论片电影| 国产黄色免费观看| 亚洲精品国产手机| 免费观看午夜在线欧差毛片| 99精品视频免费| 亚洲精品欧美综合四区| 精品亚洲一区二区| 日本免费一二区在线电影| 日本高清免费观看| 亚洲第一se情网站| 亚洲美女精品视频| 亚洲情侣偷拍精品| 最近中文字幕免费mv视频8| 成人毛片100免费观看| 欧美亚洲国产SUV| 午夜亚洲国产理论秋霞| 免费人成视频在线观看视频| 18勿入网站免费永久| 在线观看人成视频免费无遮挡 | 男女猛烈xx00免费视频试看| 亚洲天堂中文字幕| 亚洲综合亚洲综合网成人| 成人免费午夜在线观看| 一级毛片免费观看| 亚洲一级片免费看| jizzjizz亚洲日本少妇| 亚洲人成电影在线观看青青| 亚洲色无码专区在线观看| 免费大香伊蕉在人线国产| 永久免费的网站在线观看| 久久午夜夜伦鲁鲁片无码免费| 午夜在线免费视频| 久久亚洲AV成人无码国产最大| 亚洲一卡二卡三卡| 亚洲视屏在线观看| 亚洲四虎永久在线播放| 亚洲AV无码不卡无码| 亚洲精品自在在线观看| 亚洲日韩VA无码中文字幕| 免费va人成视频网站全|