麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

JAVA調試技術

2019-11-18 13:23:16
字體:
來源:轉載
供稿:網友

  這份材料介紹java的調試技術,范圍涵蓋普通程序和服務器端程序的調試。
    很多程序員并沒有熟悉到排除軟件的錯誤的價值,假如你是一個JAVA開發者,就很值得讀一讀這個材料。在現代工具的幫助下,開發者成為一個好的調試者和成為一個好的程序員的重要性一樣。
    這個材料假設你已經有基本的JAVA編程的知識,假如你精通JAVA,這個材料也可以增加你很多知識。
    假如你有其他語言的調試經驗,你可以跳過基本知識部分。
    即使是高級程序員開發的小程序也可能包含錯誤。你只需要理解調試的概念并熟悉合適的工具就可以成為好的調試者。這份材料將講解JAVA調試的基本概念,也討論高級的調試類型。我們將瀏覽不同的技術并且提供一些好的建議去幫助避免,追蹤并最終修正程序的錯誤。
    我們將通過一個調試范例以使你熟悉調試技術。我們也將使用開發源代碼工具Jikes 和JDB向你演示如何調試服務器端和客戶端程序。為了編譯和運行范例代碼,你需要先安裝一個Java Development Kit (JDK) ,你可以參考后面的部分獲得Jikes 和 JDB調試器。
    關于作者
    假如對這個材料的內容有任何問題,你可以聯系作者Laura Bennett, [email protected]
    假如對中文版的翻譯有何意見和建議,請聯系翻譯者cherami ,[email protected]
    Laura Bennett 是IBM的資深軟件工程師。她獲得Pace大學的計算機科學學士學位和Columbia大學的計算機科學碩士學位。她是developerWorks的JAVA傳教士,同時也是站點的建設者。在他的空余時間,她喜歡和她的Lego MindStorm 機器人玩樂以及和她四歲大的TinkerToys搭建物體。
    Cherami是一個軟件工程師,閑暇之余翻譯一些計算機文獻,以期為中國的計算機軟件事業做出一點微薄的貢獻。
    調試的基礎知識
    開始的情況
    在JAVA語言的早期,一個典型的開發者使用非常陳舊的方法調試程序:使用System.out.PRintln() 方法。代碼的跟蹤信息被打印到控制臺、文件或者套接字。
    很少有人能在第一次就寫出完美的(沒有任何錯誤)代碼。因此,市場熟悉到了對于像C++ 程序員使用的調試器那樣的工具的需要。Java開發者現在有很多調試工具可以選擇,選擇什么樣的工具依靠于你的技術等級。通常新手使用GUI調試工具而有更多經驗的程序員趨向于避免使用所見即所得的工具而更關心有更多的控制能力。沒有哪個開發者不使用任何調試工具。調試器答應你穿越代碼,凍結輸出以及檢查變量。開發者越有經驗,調試工具越可以幫助他更快定位程序問題的位置。
    Java調試器的類型
    這里有幾種Java調試技術的工具:
    IDE(集成開發環境) 包含它們自己的調試器 (例如IBM的VisualAge for Java, Symantec Visual Café以及 Borland JBuilder)
    單獨的GUI工具 (例如Jikes, Java 平臺調試器 javadt, 以及JProbe)
    基于文本和命令行的工具 (例如Sun JDB)
    野蠻的使用編輯器 (例如Notepad 或者 VI) 檢查堆棧描繪(stack traces)
    你使用的 JDK, JSDI, jsp, 和Html對你的選擇都有影響。
    IDE 和獨立的GUI 調試器對于初學者是最輕易的并且被證實是最節省時間的。調試器將引導你到程序崩潰的地方。在調試器里面執行程序,使用鼠標設置斷點并穿越代碼。使用這些調試器的不利方面是并非所有的IDE調試器都支持最新的Java API和技術 (例如servlets 和 EJB 組件)。
    基于文本和野蠻的使用編輯器的技術提供更多的控制但是對于沒有太多經驗的程序員可能會花費更長的時間找出錯誤。我們稱它們為“可憐人的”調試方法。
    假如上面的都不滿足你的需求, Java平臺引入Java Debugging APIs使你可以創建符合你自己特定需求的調試器。
    調試類型
    這兒有很多調試方法,無論是在客戶端還是服務器端。我們在這個材料里面包含下面的方法:
    基本的Java字節碼 (也就是使用System.out.println())
    使用注釋
    附加在一個正在運行的程序上
    遠程調試
    需求調試(Debugging on demand)
    優化代碼的調試
    Servlet, JSP 文件以及EJB 組件的調試
    在后面會具體說明每一種類型的調試。
    共同的錯誤類型
    為了給你一個你將碰到什么的提示,我們在下面列出了開發者一次又一次碰到的編輯或句法錯誤 是你最先和最輕易碰到的錯誤。它們通常是鍵入錯誤引起的。
  邏輯錯誤 不同于運行時錯誤,因為沒有任何異常被拋出,但是輸出不是期望的東西。這些錯誤的范圍從緩沖區溢出到內存泄漏。
  運行時錯誤 在程序執行時發生并且通常產生一個Java異常。
  線程錯誤 是最難重復和跟蹤的。
  Java debugging APIs
    Sun已經定義了調試的結構,它們稱之為JBUG。這是為了回應對真正的Java調試器的需要做出的。這些APIs幫助程序員建立符合自己需要的調試器:
    接口應該和語言的風格一樣是面向對象的。
    例如線程和監視器這樣的Java運行時特性應該被前面的支持。
    可以進行遠程調試。
    在通常操作下的安全性不能被損害。
    修正的Java Debugger (JDB) 既是體現Java Debugging API的概念,同時又是一個有用的調試工具。它用Java Debug Interface (JDI)重寫并且是JDK的一部分。 JDB將在后面具體討論。
    預備一個調試用的程序
    Java平臺為調試過程提供語言支持。
    你在用編譯器編譯你的程序時可以用編譯選項指示編譯器在目標文件中產生符號信息。假如你使用其它的編譯器而不是javac,參考你的編譯器的文檔獲得如何生成帶有調試信息的目標文件。
    假如你使用javac 編譯器創建調試代碼,使用-g 編譯選項。這個選項讓你在調試的時候可以檢查本機類實例和靜態變量。假如你沒有使用該選項生成你的類文件你也可以設置斷點和追蹤代碼,但是你將不能檢查變量。(斷點是手工指定的程序運行停止的點。)
    即使你使用-g選項編譯你的程序也不能調試JAVA平臺的核心系統類的局部變量。假如你需要列出某些系統類的局部變量的列表,你需要使用-g選項編譯這些類,也就是使用-g選項重新編譯rt.jar 的類或者是 src.zip 里面的文件。然后指定你的 classpath 為正確的類文件使你用新編譯的類運行你的程序。在Java 2下,使用 boot classpath 選項使得新類被首先加載。
    記住假如你使用 -O 選項優化你的代碼,你就不能調試你的類。優化會將所有的調試信息從類中去掉。
    注重: 檢查你的 CLASSPATH 環境變量是正確的才能讓調試器和Java 程序知道在哪兒尋找你的類庫。你也應該檢查你的調試工具看是否需要其它的什么或者是環境變量。
    設置斷點
    調試的第一步就是找到代碼出錯的位置。斷點設置能幫你完成這個。
    斷點是你你放置在程序里面的臨時標記,它使得調試器知道在哪兒停止程序的執行。例如,假如程序里面的某個申明引發問題,你可以將斷點設置在包含那個申明的行上,然后運行程序。在那個申明被執行前程序停止執行。然后你可以檢查變量、寄存器,存儲器以及堆棧的內容,然后跨過(或執行)那個申明查看問題是怎么引起的。
    不同的調試器支持不同的斷點。一些通用的類型是:
    行斷點 在程序特定行的代碼被執行前被引發。
    方法斷點 在到達被設置成斷點的方法時被引發。
    計數斷點 在某個計數器達到或超過某個特定值時被引發
    異常斷點 在代碼拋出一個特定異常時被引發
    儲存變化斷點 在存儲在特定地址范圍的內容被修改時引發
    地址斷點 在被設置成斷點的地址達到時被引發
    注重: 一些調試器只在編譯版本的Java代碼 (使用just-in-time 編譯器生成的代碼) 上支持某些斷點類型而不支持解釋代碼(使用javac 工具生成的代碼)。一個例子就是地址斷點。每個工具在你能設置斷點的方式上可能有些不同。檢查你的工具的文檔。
    你可能會問,我如何知道在哪兒放置斷點?
    假如你對這個問題完全沒有感覺,你可以在main() 方法的開始設置斷點
    假如你的代碼產生堆棧復寫(stack trace), 在程序產生它的地方設置斷點。你將在堆棧復寫里面看到源代碼中出問題的行號。
    假如你的輸出或者圖形顯示的特定部分沒有正確的顯示預定信息(例如文本域顯示錯誤的文本),你可以在該組件被創建的地方設置斷點。然后你可以單步執行你的程序顯示和GUI對象相關的值。
    經驗將在最合適的地方設置斷點。你在一個類或者程序里面可以設置多個斷點。
    通常,你在調試代碼的時候會禁止、激活、添加、刪除斷點。工具會答應你查看你所設置的所有斷點的位置同時給你一次刪除所有斷點的選項。
    單步執行程序
    單步執行程序是最終解決那些棘手的調試問題的方法。它答應你追蹤類里面的方法體的整個執行過程。注重,你不需要設置斷點就可以停止一個GUI程序的執行。
    設置斷點后在調試器里面開始執行程序,當碰到第一個斷點后,你可以越過申明,進入方法體或類體,也可以繼續運行直到下一個斷點或程序結束。
    在調試程序的時候經常碰到的術語有:
    進入 執行當前行。假如當前行包含一個方法調用,執行被調用方法的第一行。假如類中的方法是用不帶調試信息的選項編譯的 (也就是沒有使用 -g 選項)

上一篇:死鎖

下一篇:使用JFreeChart創建圖象

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人精品免高潮在线观看 | 天天鲁在线视频免费观看 | 日本黄色大片免费观看 | 369看片你懂的小视频在线观看 | h色网站在线观看 | 欧美成人精品h版在线观看 久久久久久三区 | 日日草夜夜操 | 日本黄色一级电影 | 国产一级一片免费播放 | 久久久久久高清 | 国产做爰 | 国产亚洲精品综合一区91 | 国产高潮好爽好大受不了了 | japan护士性xxxⅹhd | 超碰97最新 | 视频一区二区三区中文字幕 | 黄色片在线免费播放 | 天天操很很操 | 精品一区二区久久久久久按摩 | av在线官网| 成人福利在线播放 | 国产精品九九久久一区hh | 精品国产一区二区三区成人影院 | 日韩每日更新 | 在线免费观看麻豆 | 国产超碰人人做人人爱ⅴa 国产精品久久久久久久hd | 黄色a级片视频 | 欧美成人激情在线 | 手机国产乱子伦精品视频 | 日本网站在线看 | 国产亚洲自拍一区 | 免费1级做55爰片l在线观看 | 国产精品久久久久久影视 | 久操福利视频 | 深夜免费视频 | 九九热精品免费视频 | 免费毛片电影 | 一级黄色毛片播放 | 国产成人小视频在线观看 | 国产合集91合集久久日 | 国产精品久久久久久久四虎电影 |