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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java調(diào)試教程--客戶機(jī)端調(diào)試

2019-11-18 14:24:35
字體:
供稿:網(wǎng)友

  摘要

  有許多調(diào)試技術(shù)可供選擇。請(qǐng)一定要檢查工具文檔以查看它是否支持這些技術(shù)。了解不同的調(diào)試技術(shù)有助于選擇符合您所有需要的調(diào)試器。


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



  java調(diào)試教程(四)--客戶機(jī)端調(diào)試

  SUN Laura Bennett

  介紹客戶機(jī)端調(diào)試技術(shù)

  有許多調(diào)試技術(shù)可供選擇。請(qǐng)一定要檢查工具文檔以查看它是否支持這些技術(shù)。了解不同的調(diào)試技術(shù)有助于選擇符合您所有需要的調(diào)試器。

  使用 system.out.PRintln() 進(jìn)行調(diào)試

  有必要提一下簡(jiǎn)單化調(diào)試。假如有一小段代碼,應(yīng)該使用 System.out.println(),不必浪費(fèi)時(shí)間使用全功能調(diào)試器來裝入并單步調(diào)試這些代碼。在運(yùn)行時(shí)期間,System.out.println() 會(huì)在控制臺(tái)或?qū)⑤敵鲋囟ㄏ虻降奈恢蒙巷@示消息、變量和狀態(tài)信息。所有對(duì)象都繼續(xù)了 toString() 方法。在開發(fā)新的對(duì)象時(shí),覆蓋此方法并生成您自己的對(duì)象字符串表示法是個(gè)不錯(cuò)的想法。

  Michael C. Daconta 的 Java Pitfalls(請(qǐng)參閱參考資料)共享了應(yīng)用 println()方法的有用技術(shù)。Daconta 建議創(chuàng)建 DebugManager() 類,這個(gè)類答應(yīng)您根據(jù)某些類或應(yīng)用程序來設(shè)置一個(gè)調(diào)試標(biāo)志。假如代碼中有許多 if(debug) 嵌套語句,那么可以使用DebugManager() 類作為代替。仍然可以選擇開始調(diào)試整個(gè)系統(tǒng)。

  一個(gè)示例方案就是答應(yīng)您劃分單元和顯示背景的映射系統(tǒng)。在某些情況下,可能想查看只適用于 Plot Units 應(yīng)用程序的調(diào)試語句,而在其它情況下,可能想要查看整個(gè)系統(tǒng)的調(diào)試。應(yīng)該創(chuàng)建類似于下列代碼的 DebugManager() 類:


public class DebugManager
{
public static final String SYSTEM_DEBUG_KEY = "system.Debug";
public static final boolean debug;
static
{
debug = toBoolean(SYSTEM_DEBUG_KEY);
}
private static boolean toBoolean(String key)
{
String sDebug = System.getProperty(key);
if (sDebug != null && sDebug.equalsIgnoreCase("true"))
debug = true;
else
debug = false;
}
public static boolean getSystemDebug()
{
return debug;
}
public static boolean getSystemDebug(String applicationKey)
{
if (debug′ ′debugToBoolean(applicationkey))
return true;
else
return false;
}
}



  使用 system.out.println() 進(jìn)行調(diào)試的練習(xí)

  使用上一屏中的代碼,應(yīng)用程序會(huì)生成類似于以下的調(diào)用來查詢調(diào)試方式(“開”或“關(guān)”):boolean debug = DebugManager.getSystem.Debug(applicationkey);輸入以下命令行,對(duì)劃分工具或背景或者整個(gè)系統(tǒng)進(jìn)行調(diào)試:


java -DplotTool.Debug=true -DbackgroundLoader.Debug=true
-Dsystem.Debug=false MapSystem



  以上的語句說明了對(duì) plotTool 應(yīng)用程序和背景顯示應(yīng)用程序打開了調(diào)試,但對(duì)整個(gè)系統(tǒng)關(guān)閉了調(diào)試。每個(gè)應(yīng)用程序的應(yīng)用程序鍵是: plotTool ;應(yīng)用程序密鑰是 plotTool.Debug;背景顯示程序應(yīng)用程序鍵是 backgroundLoader.Debug;整個(gè)系統(tǒng)的應(yīng)用程序鍵是 system.Debug。

  真正的代碼將封裝在 if(debug) 語句中。假如調(diào)試是真,則將執(zhí)行封裝的代碼,然后打印 System.out.println() 方法的結(jié)果。

  總之,假如要調(diào)試少量代碼,只推薦使用 if(debug)。將 DebugManager() 創(chuàng)建成單獨(dú)的編譯類,以便在需要時(shí)能立即使用。

  使用注釋進(jìn)行調(diào)試

  使用注釋是另一種調(diào)試方法。使用二分法搜索算法,開始時(shí)就注釋掉大部分代碼,然后縮?到錯(cuò)誤重新出現(xiàn)。此時(shí),就找到了出錯(cuò)的位置。此外,建議不要在大規(guī)模的項(xiàng)目中使用二分法搜索算法。

  連接到正在運(yùn)行的程序

  許多程序員使用連接到正在運(yùn)行的進(jìn)程的技術(shù),作為遠(yuǎn)程調(diào)試的替代技術(shù),用于測(cè)試跨平臺(tái)兼容性。可以驗(yàn)證某個(gè)應(yīng)用程序在不同的 JVM上是否正常運(yùn)行。這種技術(shù)還可以讓您確保在另一個(gè)機(jī)器上有全部必需的系統(tǒng)資源。某些調(diào)試器可以讓您連接到多個(gè) JVM,調(diào)試多層系統(tǒng)時(shí),這樣做將變得價(jià)值連城。隨著一層變成活動(dòng)的,調(diào)試器連接到它的 JVM,并開始徹底檢查它。

  將調(diào)試器連接到發(fā)生錯(cuò)誤或故障的正在運(yùn)行的程序或正在運(yùn)行的 JVM。

  使用這種調(diào)試方法有兩個(gè)主要原因:

  預(yù)計(jì)程序中某個(gè)特定位置會(huì)有問題,但又不想單步調(diào)試程序或者設(shè)置斷點(diǎn)。

  正在開發(fā)或維護(hù)偶然會(huì)暫掛的程序,并且想要找出暫掛的原因。

  在這種情況下,可以連接調(diào)試器,并查找死循環(huán)或其它可能導(dǎo)致程序暫掛的問題。 正在連接的 JVM 必須正在以調(diào)試方式運(yùn)行。它既可以是遠(yuǎn)程系統(tǒng),也可以是本地系統(tǒng)。源文件可以在任意一個(gè)系統(tǒng)上。

  遠(yuǎn)程調(diào)試

  設(shè)想程序在另一個(gè)用戶的系統(tǒng)上運(yùn)行與在您自己的系統(tǒng)上運(yùn)行的運(yùn)轉(zhuǎn)情況肯定會(huì)不同。從您的系統(tǒng)上,使用遠(yuǎn)程調(diào)試功能來調(diào)試其它系統(tǒng)上的遠(yuǎn)程程序。遠(yuǎn)程調(diào)試要求在一個(gè)計(jì)算機(jī)上運(yùn)行應(yīng)用程序,并在另一個(gè)計(jì)算機(jī)上調(diào)試它。當(dāng)調(diào)試復(fù)雜的GUI應(yīng)用程序時(shí),遠(yuǎn)程調(diào)試會(huì)變得非常有用。調(diào)試設(shè)施本身的用法就象調(diào)試運(yùn)行本地的代碼完全一樣。然而,設(shè)置和監(jiān)控調(diào)試會(huì)話稍微復(fù)雜一些。請(qǐng)參考調(diào)試器文檔,以查看它是否支持遠(yuǎn)程調(diào)試,以及如何設(shè)置環(huán)境。

  遠(yuǎn)程調(diào)試的主要要求是訪問網(wǎng)絡(luò)機(jī)器。正在調(diào)試的類文件必須駐留在遠(yuǎn)程機(jī)器上,并且已經(jīng)編譯過以備調(diào)試。由于使用了 GUI 調(diào)試器,于是客戶機(jī)用戶界面在一個(gè)系統(tǒng)上運(yùn)行,而調(diào)試引擎在另一個(gè)系統(tǒng)上運(yùn)行。

  有兩種遠(yuǎn)程調(diào)試:同類和異類。當(dāng)本地和遠(yuǎn)程系統(tǒng)都使用相同的操作系統(tǒng)時(shí),將發(fā)生同類遠(yuǎn)程調(diào)試。當(dāng)本地和遠(yuǎn)程系統(tǒng)使用不同的操作系統(tǒng)時(shí),將發(fā)生異類遠(yuǎn)程調(diào)試。

  為什么要使用遠(yuǎn)程調(diào)試呢?

  當(dāng)調(diào)試器用戶界面獨(dú)立于應(yīng)用程序用戶界面時(shí),易于調(diào)試使用圖形或有圖形用戶界面的應(yīng)用程序。與應(yīng)用程序的交互發(fā)生在遠(yuǎn)程系統(tǒng)上,而與調(diào)試器的交互發(fā)生在本地系統(tǒng)上。已經(jīng)針對(duì)一個(gè)平臺(tái)編譯了要調(diào)試的程序,而調(diào)試器用戶界面不在該平臺(tái)上運(yùn)行。可以使用遠(yuǎn)程調(diào)試功能在調(diào)試遠(yuǎn)程應(yīng)用程序時(shí)利用調(diào)試器用戶界面。

  按需求調(diào)試

  無論何時(shí)在程序中發(fā)生未處理的異常或不可糾正的錯(cuò)誤,按需求調(diào)試都可以讓您打開調(diào)試會(huì)話。調(diào)試器啟動(dòng),并連接到程序中發(fā)生故障的位置。這樣做可以節(jié)省時(shí)間,有兩種方法:不必重新創(chuàng)建錯(cuò)誤,在碰到故障之前,程序可以全速運(yùn)行而不會(huì)受到調(diào)試器的干擾。

  由于使用了按需求調(diào)試,可以找到并修復(fù)應(yīng)用程序中的問題,讓應(yīng)用程序繼續(xù)運(yùn)行。

  優(yōu)化代碼調(diào)試

  調(diào)試優(yōu)化代碼有一點(diǎn)復(fù)雜,因?yàn)椴荒芡瑫r(shí)優(yōu)化和調(diào)試代碼。有時(shí),問題只在優(yōu)化期間出現(xiàn),從而指出存在邏輯錯(cuò)誤。

  捕捉這些類型的錯(cuò)誤的最佳方法是使用二分法搜索技術(shù),如下所述:

  開始時(shí),只優(yōu)化一部分代碼,查看錯(cuò)誤是否仍然存在。在每次更改優(yōu)化模塊數(shù)量之后,假如錯(cuò)誤仍然存在,則減少優(yōu)化模塊的數(shù)量;假如錯(cuò)誤消失了,則優(yōu)化更多模塊。最后將錯(cuò)誤范圍縮小到單個(gè)模塊或少數(shù)模塊。查找問題,如在變量被寫入之前讀取該變量,或超過存儲(chǔ)器范圍的數(shù)組下標(biāo)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产毛片自拍 | 最近高清无吗免费看 | 91短视频在线播放 | 日韩视频精品一区 | 精品一二三区视频 | 免费在线观看毛片视频 | 亚洲伊人色欲综合网 | 亚洲免费视频一区二区 | 欧洲精品久久 | 国产成人羞羞视频在线 | 成人在线视频国产 | 1级毛片在线观看 | 亚洲福利视 | 26uuu成人人网图片 | 国产成人精品区一区二区不卡 | 精品中文视频 | 成年免费视频黄网站在线观看 | 日本a∨精品中文字幕在线 欧美1—12sexvideos | 色综合精品 | 成品片a免费直接观看 | 91资源在线观看 | 欧美亚洲一级 | 免费视频xxxx | 5a级毛片 | 91精品中文字幕 | 免费观看一级欧美大 | 免费国产一级淫片 | 黄网站在线观 | 久久精品女人天堂av | 欧美成在线视频 | 国产一区二区视频精品 | 久久精品国产99久久久古代 | 欧美日韩精品一区二区三区蜜桃 | 中国女人内谢8xxxxxx在 | 久久亚洲国产午夜精品理论片 | 久久www视频 | 久久精品日产第一区二区三区 | 看片一区二区三区 | 精品一区二区三区日本 | 99视频有精品视频高清 | 亚洲第五色综合网 |