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

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

Java調試教程--基礎知識概述

2019-11-18 14:24:40
字體:
來源:轉載
供稿:網友

  摘要

  java 平臺提供了用于調試處理的語言支持??梢杂媚承┚幾g器選項來編譯程序,這些編譯器選項指導編譯器在目標文件中生成符號化信息。假如所使用的編譯器不是javac,請參考編譯器文檔以了解如何使用調試信息來編譯程序。



--------------------------------------------------------------------------------


  Java調試教程--基礎知識概述

  SUN Laura Bennett

  預備要調試的程序

  Java 平臺提供了用于調試處理的語言支持。可以用某些編譯器選項來編譯程序,這些編譯器選項指導編譯器在目標文件中生成符號化信息。假如所使用的編譯器不是javac,請參考編譯器文檔以了解如何使用調試信息來編譯程序。

  假如使用 javac 編譯器來構建要調試的代碼,請使用 -g 編譯器選項。該選項讓您可以在調試時檢查局部、類實例和靜態變量。假如不使用 -g 選項來編譯類,依然可以設置斷點并單步調試代碼;但是將不能檢查變量。(斷點是在代碼中手工指定的希望停止執行程序的位置。)

  即便使用 -g 選項來編譯應用程序,在核心 Java 平臺系統類中仍不能使用本地調試值。假如需要列出某些系統類的列表局部變量,需要使用 -g 選項來編譯那些類。使用-g 選項來重新編譯 rt.jar 或 src.zip 文件中的類。將類路徑指向正確的類文件,以便使用新編譯的對話類來運行應用程序。在 Java 2 中,使用 boot classpath 選項,這樣?請記住,假如使用用于優化代碼的 -O 選項進行編譯,那么將無法調試類。優化將除去類中的所有調試信息。

  注:驗證是否正確設置了 CLASSPATH 環境變量,以便調試器和 Java 應用程序知道在哪里可以找到類庫。還應該檢查正在使用的工具,查看是否還有其它必需或可選的環境變量。

  設置斷點

  調試的第一步是找出代碼的哪個位置出了錯。設置斷點有助于完成此項工作。斷點是放置在程序中的臨時標記,用于告訴調試器在何處停止執行程序。例如,假如程序中的某個特定語句造成了問題,可以在包含該語句的那行中設置斷點,然后運行程序。在執行該語句之前,將在斷點處停止執行。然后可以檢查變量、寄存器、存儲器和堆棧的內容,然后跨過(或執行)該語句來查看問題是如何產生的。許多調試器都支持幾種斷點。某些最常用的斷點是:

  行斷點,在執行程序中某特定行的代碼之前觸發。

  方法斷點,在到達已設置了斷點的方法時觸發。

  計數器斷點,在計數器假設或超過某個特定值時觸發。

  異常斷點,在代碼拋出特定類型的異常時觸發。

  存儲器更改斷點,在更改了某特定存儲器地址范圍中的存儲器時觸發。

  地址斷點,在到達設置了斷點的地址處觸發。

  注:某些調試器只支持編譯型 Java 代碼(如 JIT 編譯器)中某些類型的斷點,而不支持解釋型代碼(如由 javac 工具編譯的代碼)中的斷點?!暗刂窋帱c”就是這樣的例子。每種工具設置斷點的方法都略有不同。請查看工具的文檔。

  您也許會問,我怎么知道在哪里放置斷點呢?

  假如您對此問題仍感到不知所措,那么可以在 main() 方法中的程序開始處設置斷點。

  假如代碼生成了堆棧跟蹤,那么在堆棧跟蹤結束的區域中設置斷點。可以在堆棧跟蹤中看到源代碼的行號。

  假如輸出或圖形顯示的特定部分沒有正確顯示信息(例如,文本字段顯示了錯誤的文本),可以在創建組件的位置設置斷點。然后可以單步調試代碼,并顯示分配給 GUI 對象的值。

  經驗會教您如何在最適當的位置設置斷點。在一個類或程序中可以設置多個斷點。在調試代碼時,通常會禁用或啟用斷點,或者添加或刪除斷點。工具可以讓您查看所有斷點的位置,并可以在一步操作中刪除所有斷點。

  單步調試程序

  單步調試程序就是解決這些棘手的調試問題的基本方法。它讓您可以運行在類主體中調用的方法。請注重,不必設置斷點就可以停止圖形用戶界面 (GUI) 程序。在設置了斷點之后,開始在調試器中執行代碼。碰到第一個斷點時,可以跨過語句,步入其它方法或類,繼續運行直至到達下一個斷點,或者繼續運行直到程序結束。步入調試器時,會看到的常見項是:

  Stepping into 執行當前行。假如當前行包含對某個方法的調用,則執行轉到被調用方法的第一行。假如方法在未用調試信息編譯(即,用 -g 選項)的類中,則會看到一條消?

  Stepping over 執行當前行,但不會在該行中調用的任何函數或例程中停止。

  Step return 從當前執行點一直執行到調用當前方法的那行代碼的后面一行。

  檢查變量

  通常,程序會因為沒有正確設置變量的值而發生信息轉儲。最常見的情況是試圖將變量與空值比較或對變量除以零。找出是否存在這種情況的最簡便方法是在發生錯誤的位置檢查值。通常,不會在您期望的位置對變量進行賦值。

  可視調試器通常有一個監控窗口,在該窗口中顯示了當前所在的類中所有局部變量的值。某些調試器甚至顯示變量的地址,甚至還讓您動態更改變量值以查看程序是否按您的最初設想繼續執行。命令行調試器通常通過命令來處理相同功能。使用命令行功能,甚至可以通過顯示每一行和每一列的內容來檢查數組的全部內容。

  雖然大多數調試器只在監控窗口中顯示類作用域中的局部變量,但有些調試器讓您可以在它離開作用域之后繼續監控變量。某些調試器支持查看寄存器。請注重,只能在編譯型 Java 程序中查看寄存器,在解釋型程序卻不行。

  堆棧跟蹤

  當 Java 程序轉儲信息時,它會生成控制臺窗口的堆棧跟蹤。堆棧跟蹤告訴開發人員程序執行到發生問題的位置經過的確切路線。堆棧跟蹤將指出類和方法名稱,以及源代碼行號(假如使用調試選項進行編譯)。假如從跟蹤的起點開始,可以向回追溯代碼,以查看究竟執行了什么語句。這是一種迅速確定程序中哪里出錯的方法。

  可以使用以下語句人為地生成堆棧跟蹤。

  Throwable().PRintStackTrace() 用于在某一時刻生成方法代碼的跟蹤。此跟蹤將顯示線程之間的方法調用。

  Thread.currentThread.dumpStack() 用于只生成當前線程的快照。

  假如需要了解程序在什么情況下會生成輸出,就應該實施堆棧跟蹤。以下是實施堆棧跟蹤的一個示例。此代碼段方法創建了文件的副本。我們通過比較兩個文件的長度來檢查復制是否成功。假如不相等,我們將對一個建立跟蹤,然后打印堆棧跟蹤(見以粗體字顯示的語句)。Throwable() 是 java.lang 包中的一個類。printStackTrace() 是 Throwable() 類中的一個方法,它將打印出程序執行路線的跟蹤。


public static boolean copyFile( String sourceFile, String targetFile)
{
........
........
// see if the copy sUCceeded.
if (success)
{
// see if the correct number of bytes were copied
long newFileLength = new File(targetFile).length();
if (oldFileLength != newFileLength)
{
Debug.trace(1, sourceFile + Constants.BLANK_STRING +
Long.toString(ol
dFileLength));
Debug.trace(1, targetFile + Constants.BLANK_STRING +
Long.toString(ne
wFileLength));
Throwable().printStackTrace();
return false;
}
}
else
{
Debug.trace(1, sourceFile);
Debug.trace(1, targetFile);
return false;
}
........
........
return true;
}

  您可能會發現堆棧跟蹤沒有打印行號。這就是所謂的“編譯代碼”。要獲取行號,使用 nojit 選項或命令行自變量 Djava.compiler=NONE 來禁用 JIT 編譯器。但是,假如得到了方法的名稱以及它所屬的類,獲取行號就不那么重要了。

  診斷方法

  Java 語言提供了 Runtime() 類中的方法,用于跟蹤對 Java 虛擬機的調用。這些跟蹤將生成一個列表,它包含程序對 JVM 字節碼的每一個方法調用。請注重,該列表可能會生成大量輸出,所以每次使用它時應針對小段代碼。將以下行添加到源代碼中,以打開跟蹤:

traceMethodCalls(true)

  將以下行添加到源代碼中,以關閉跟蹤:

traceMethodCalls(false)

  啟動 JVM,當它被發送到標準輸出時,監視輸出。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线精品成人一区二区三区| 国产精品入口免费视频一| 少妇久久久久久| 欧美激情三级免费| 国产一区二区三区视频免费| 精品免费在线观看| 欧美性开放视频| 久久久久久久久久久亚洲| 欧美国产日韩xxxxx| 亚洲精品自拍偷拍| 亚洲国产日韩欧美在线99| 欧美国产亚洲精品久久久8v| 亚洲xxxx3d| 欧美性极品少妇精品网站| 久久精品一偷一偷国产| 日韩av网址在线| 奇米4444一区二区三区| 国产日韩在线看片| 久久久久久噜噜噜久久久精品| 国产69精品久久久久9| 日韩在线精品一区| 中文字幕日韩欧美在线视频| 亚洲精品一区中文字幕乱码| 中文字幕亚洲综合久久| 色偷偷噜噜噜亚洲男人的天堂| 亚洲天堂男人的天堂| 日韩最新免费不卡| 久久久久久久成人| 亚洲欧美日韩精品久久奇米色影视| 欧美激情视频在线| 亚洲午夜久久久影院| 亚洲福利视频网站| 国产欧美一区二区三区在线看| 亚洲天堂一区二区三区| 国内精品久久久久久久| 成人午夜激情网| 狠狠做深爱婷婷久久综合一区| 欧美成年人网站| 国产精品久久久久久久久| 国产免费一区二区三区在线能观看| 98视频在线噜噜噜国产| 亚洲成色777777在线观看影院| 亚洲free嫩bbb| 91精品国产99久久久久久| 懂色av影视一区二区三区| 日韩国产精品一区| 中文字幕精品久久| 久久精品久久久久久国产 免费| 欧美在线一区二区视频| 久久噜噜噜精品国产亚洲综合| 日韩在线视频线视频免费网站| 久久视频免费在线播放| 国产成人综合一区二区三区| 国产精品久久久久影院日本| 欧美日韩中文字幕在线视频| 国产精品扒开腿做爽爽爽男男| 91久久中文字幕| 欧美一区二区色| 国产精品露脸av在线| 亚洲精品动漫久久久久| 欧美午夜美女看片| 青青精品视频播放| 亚洲专区中文字幕| 国产在线观看一区二区三区| 久久久91精品国产一区不卡| 色综合男人天堂| 91精品国产色综合久久不卡98口| 91精品视频在线播放| 欧美激情欧美激情在线五月| 久久精品2019中文字幕| 中文字幕日韩精品在线观看| 日韩**中文字幕毛片| 亚洲一级黄色片| 欧美高清视频免费观看| 欧美老肥婆性猛交视频| 性欧美暴力猛交69hd| 91精品在线播放| 欧美香蕉大胸在线视频观看| 欧美老少做受xxxx高潮| 国产精品精品一区二区三区午夜版| 国产精品成人免费视频| 中文字幕日本欧美| 成人免费看吃奶视频网站| 欧美日韩国产精品一区| 日韩久久免费电影| 欧美性xxxxx极品娇小| 亚洲成av人影院在线观看| 国产99视频在线观看| 久久综合五月天| 国产精品www色诱视频| 91精品视频观看| 亚洲成人动漫在线播放| 欧美大奶子在线| 亚洲一区二区国产| 国产精品一久久香蕉国产线看观看| 精品福利一区二区| 中文字幕日韩精品在线观看| 欧美亚洲伦理www| 国产69精品久久久| 欧美日韩免费一区| 奇门遁甲1982国语版免费观看高清| 亚洲新中文字幕| 亚洲无限乱码一二三四麻| 日韩成人激情在线| 久久伊人色综合| 午夜精品蜜臀一区二区三区免费| 国产精品久久在线观看| 亚洲国产古装精品网站| 国产精品成人av性教育| 狠狠久久五月精品中文字幕| 国产成人精品亚洲精品| 国产深夜精品福利| 欧美激情中文字幕乱码免费| 日韩精品免费在线观看| 97精品在线视频| 久久精品国产99国产精品澳门| 欧美一区二区三区免费观看| 久久精品国产一区二区三区| 国产精品美女在线观看| 青青精品视频播放| 色偷偷偷亚洲综合网另类| 久久精品美女视频网站| 国产精品xxx视频| 欧美黄色三级网站| 亚洲视频欧洲视频| 精品亚洲国产成av人片传媒| 在线a欧美视频| 国产精品91在线| 91av在线不卡| 国产亚洲欧洲高清| 九九视频这里只有精品| 欧美日韩成人在线播放| 欧美天天综合色影久久精品| 久久精品色欧美aⅴ一区二区| 欧美国产亚洲视频| 伊人男人综合视频网| 久久久精品久久| 亚洲欧美激情另类校园| 欧美裸体xxxx极品少妇| 亚洲精品综合精品自拍| 一本色道久久88精品综合| 国产在线播放91| 日韩在线一区二区三区免费视频| 热久久视久久精品18亚洲精品| 久久精视频免费在线久久完整在线看| 2019中文在线观看| 欧美色欧美亚洲高清在线视频| 色先锋久久影院av| 色中色综合影院手机版在线观看| 最近中文字幕mv在线一区二区三区四区| 最近2019中文字幕大全第二页| 66m—66摸成人免费视频| 日韩av在线一区| 国产精品a久久久久久| 欧美一区二区三区艳史| www.xxxx欧美| 一本色道久久88亚洲综合88| 亚洲欧美中文另类| 日韩视频亚洲视频| 亚洲国产成人精品一区二区| 91精品国产高清久久久久久| 国产精品电影在线观看| 久久久av一区| 国产成人+综合亚洲+天堂|