亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

JAVA調試技術

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

  這份材料介紹java的調試技術,范圍涵蓋普通程序和服務器端程序的調試。
    很多程序員并沒有熟悉到排除軟件的錯誤的價值,假如你是一個JAVA開發者,就很值得讀一讀這個材料。在現代工具的幫助下,開發者成為一個好的調試者和成為一個好的程序員的重要性一樣。
    這個材料假設你已經有基本的JAVA編程的知識,假如你精通JAVA,這個材料也可以增加你很多知識。
    假如你有其他語言的調試經驗,你可以跳過基本知識部分。
    即使是高級程序員開發的小程序也可能包含錯誤。你只需要理解調試的概念并熟悉合適的工具就可以成為好的調試者。這份材料將講解JAVA調試的基本概念,也討論高級的調試類型。我們將瀏覽不同的技術并且提供一些好的建議去幫助避免,追蹤并最終修正程序的錯誤。
    我們將通過一個調試范例以使你熟悉調試技術。我們也將使用開發源代碼工具Jikes 和JDB向你演示如何調試服務器端和客戶端程序。為了編譯和運行范例代碼,你需要先安裝一個Java Development Kit (JDK) ,你可以參考后面的部分獲得Jikes 和 JDB調試器。
    關于作者
    假如對這個材料的內容有任何問題,你可以聯系作者Laura Bennett, lbenn@us.ibm.com。
    假如對中文版的翻譯有何意見和建議,請聯系翻譯者cherami ,cherami@163.net 。
    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創建圖象

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩最新免费不卡| 欧美午夜片在线免费观看| 国产精品欧美在线| 91精品久久久久久久久久久| 亚洲最大的网站| 日韩福利视频在线观看| 久久精品免费播放| 欧美夫妻性生活xx| 日韩一区二区三区国产| 亚洲性生活视频在线观看| 久久免费精品视频| 夜夜嗨av一区二区三区免费区| 日韩av在线免播放器| 少妇高潮 亚洲精品| 久久久91精品国产| 色综合色综合久久综合频道88| 欧美日韩国产精品| 欧美自拍视频在线观看| 欧美日本亚洲视频| 亚洲成色999久久网站| 日韩欧美精品在线观看| 亚洲片av在线| 欧美亚洲在线观看| 91精品久久久久久久久青青| 一区二区三区精品99久久| 在线成人激情黄色| 欧美黄色片免费观看| 欧美激情视频给我| 亚洲综合在线中文字幕| 亚洲免费伊人电影在线观看av| 国产精品丝袜一区二区三区| 欧美激情成人在线视频| 一区二区三区视频免费| 69久久夜色精品国产69乱青草| 欧美亚洲日本网站| 欧美日韩高清在线观看| 国产精品久久久久久久app| 精品久久久视频| 一区二区欧美在线| 欧美日韩国产丝袜另类| 91在线视频九色| 亚洲综合最新在线| 国产精品美女免费看| 国产亚洲欧美日韩一区二区| 91社影院在线观看| 久久久久国产精品www| 日韩**中文字幕毛片| 国产91网红主播在线观看| 日韩av在线免费播放| 国产高清视频一区三区| 欧美成aaa人片免费看| 91热精品视频| 亚洲美女性生活视频| 国产日韩av在线播放| 日韩精品丝袜在线| 亚洲美女又黄又爽在线观看| 日本久久久久久久| 91久久久久久久久久| 在线亚洲午夜片av大片| 一区二区亚洲精品国产| 亚洲最新av网址| 久久久久久久一区二区三区| 日韩在线观看免费全集电视剧网站| 国产精品免费小视频| 成人在线精品视频| 中文字幕亚洲综合| 国产欧美 在线欧美| 欧美精品18videosex性欧美| 国产一区二区日韩精品欧美精品| 久久久精品在线观看| 日韩欧美亚洲范冰冰与中字| 97色伦亚洲国产| 日韩精品亚洲元码| 日韩电影免费在线观看| 亚洲免费影视第一页| 日韩美女在线观看一区| 黄色精品在线看| 91久久在线视频| 国产精品久久网| 国产精品精品视频一区二区三区| 国产69精品99久久久久久宅男| 国产噜噜噜噜噜久久久久久久久| 欧美综合在线观看| 91色精品视频在线| 欧美裸身视频免费观看| 国产香蕉一区二区三区在线视频| 亚洲国产精彩中文乱码av| 欧美中文字幕精品| 欧美性猛交xxxx黑人猛交| 日韩欧美中文在线| www国产精品com| 欧美精品福利视频| 亚洲一区二区黄| 亚洲新中文字幕| 911国产网站尤物在线观看| 97久久精品国产| 欧美一区二区影院| 日韩av在线影视| 日本欧美爱爱爱| 黄色精品在线看| 青草青草久热精品视频在线网站| 91免费看片在线| 亚洲一级片在线看| 国产69精品久久久久久| 成人国产精品久久久| 欧美尤物巨大精品爽| 国产精品1区2区在线观看| 日本久久中文字幕| 久久久精品在线| 日韩视频在线免费观看| 久久香蕉国产线看观看网| 国产亚洲美女精品久久久| 亚洲精品国产精品国自产在线| 亚洲电影免费观看高清完整版在线观看| 国产精品久久精品| 亚洲在线免费看| 国产欧美一区二区| 国产一区二区三区网站| 国语自产在线不卡| 日韩在线激情视频| 精品亚洲夜色av98在线观看| 精品一区二区三区四区在线| 91精品在线播放| 隔壁老王国产在线精品| 久久久精品欧美| 成人在线视频网站| 久久精品91久久久久久再现| 午夜伦理精品一区| 久久久久久中文字幕| 少妇精69xxtheporn| 欧美日韩另类字幕中文| 精品国产福利视频| 国产丝袜高跟一区| 精品国产自在精品国产浪潮| 日韩在线观看免费全| 亚洲视频在线观看视频| 91日韩在线播放| 中文字幕亚洲欧美在线| 2020国产精品视频| 主播福利视频一区| 亚洲毛片在线免费观看| 国产精品美女在线观看| 欧美精品做受xxx性少妇| 欧美日韩亚洲一区二区三区| 日韩av电影中文字幕| 欧美日韩午夜激情| 欧美专区在线观看| 久久中文字幕视频| 国产一区二区三区在线观看视频| 日韩av网址在线| 久久精品国产91精品亚洲| 亚洲理论片在线观看| 亚洲区在线播放| 成人精品一区二区三区电影黑人| 国产在线高清精品| 久久久久久欧美| 久久夜精品香蕉| 色先锋资源久久综合5566| 久久国产精品影片| 国内精品中文字幕| 色综合久综合久久综合久鬼88| 欧美三级免费观看| 色综合久久久久久中文网| 国产精品毛片a∨一区二区三区|国|