調(diào)試不僅可以查找到應(yīng)用程序缺陷所在仔引,還可以解決缺陷坐求。對于Java程序員來說絮重,他們不僅要學(xué)會如何在Eclipse里面開發(fā)像樣的程序惋啃,更需要學(xué)會如何調(diào)試程序碴开。本文介紹了Java程序員必知的10個(gè)調(diào)試技巧毅该,保證讓你受益匪淺!
調(diào)試可以幫助識別和解決應(yīng)用程序缺陷潦牛,在本文中眶掌,作者將使用大家常用的的開發(fā)工具Eclipse來調(diào)試Java應(yīng)用程序。但這里介紹的調(diào)試方法基本都是通用的巴碗,也適用于NetBeans IDE朴爬,我們會把重點(diǎn)放在運(yùn)行時(shí)上面。
在開始之前橡淆,推薦大家去看看Eclipse shortcuts(http://javapapers.com/core-java/eclipse-shortcuts/)這篇文章召噩,它將會給你帶來很多方便。在本文中使用的是Eclipse Juno版(Eclipse 4.2)
在開始前給大家提3點(diǎn)建議逸爵!
1.不要使用System.out.println作為調(diào)試工具
2.把所有涉及到的組件日志級別激活并使用
3.使用日志分析器來讀取日志
1條件斷點(diǎn)
如果你不知道如何添加斷點(diǎn)具滴,只需點(diǎn)擊左邊面板(行號前面)斷點(diǎn)即被創(chuàng)建。在調(diào)試界面中师倔,“斷點(diǎn)”視圖會把所有被創(chuàng)建的斷點(diǎn)列出來构韵。我們可以給它加一個(gè)布爾條件,也就是說,該斷點(diǎn)會被激活并且如果布爾條件為真疲恢,就會執(zhí)行該斷點(diǎn)凶朗,否則將會跳過往下執(zhí)行。
2異常斷點(diǎn)?
阿里Java高級大牛直播講解知識點(diǎn)显拳,分享知識棚愤,五大專題都是各位老師多年工作經(jīng)驗(yàn)的梳理和總結(jié),帶著大家全面杂数、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知扣群Java大神高級架構(gòu)群:658362658備注好信息宛畦!
在斷點(diǎn)視圖中,有一個(gè)J!標(biāo)記按鈕耍休!我們可以使用該按鈕來添加一個(gè)Java異常斷點(diǎn)。例如货矮,我們想讓程序在遇到空指針異常(NullPointerException)時(shí)羊精,仍然能繼續(xù)調(diào)試,那么我們可以使用該按鈕來添加一個(gè)異常斷點(diǎn)囚玫!
3監(jiān)視點(diǎn)
這是一個(gè)非常好的功能喧锦,當(dāng)選定的屬性訪問或修改程序時(shí),程序會停止執(zhí)行并允許進(jìn)行調(diào)試抓督。在Outline視圖中選擇一個(gè)類變量并從上下文菜單中選擇切換監(jiān)視點(diǎn)燃少,屬性監(jiān)視點(diǎn)將會被創(chuàng)建,在斷點(diǎn)(Breakpoints)視圖中會把所有監(jiān)視點(diǎn)用列表的形式顯示出來铃在。
4評估/檢查
按Ctrl+Shift+D或者Ctrl+Shift+I來顯示選定變量或者表達(dá)式的值阵具。我們也可以給一個(gè)變量或表達(dá)式添加永久觀察點(diǎn),當(dāng)程序在調(diào)試時(shí)定铜,這些觀察點(diǎn)就會在表達(dá)式視圖(Expression view)中顯示出來阳液。
5修改變量值
在調(diào)試過程中,我們可以修改變量值揣炕。先選好一個(gè)變量然后進(jìn)入變量視圖(Variables view)帘皿,根據(jù)變量類型在其對應(yīng)的Value列里輸入值即可。
6在Main函數(shù)里面停止執(zhí)行
在運(yùn)行/調(diào)試設(shè)置中畸陡,編輯配置對話框中有“Main”這個(gè)選項(xiàng)卡鹰溜,我們可以勾選“Stop in main”這個(gè)復(fù)選框。如果選中丁恭,那么在調(diào)試一個(gè)基于main方法的Java程序時(shí)曹动,程序會在main方法第一行位置便停止執(zhí)行。
.
7環(huán)境變量
并不是在系統(tǒng)屬性中添加環(huán)境變量牲览,我們可以在編輯配置對話框中很方便地進(jìn)行添加仁期。
.
8Drop to Frame
這也是我最喜歡的一個(gè)功能。調(diào)試期間,可以重新跳到調(diào)用堆楑说埃框架的開始處執(zhí)行熬的,并且變量值也會回到最初。根據(jù)回檔調(diào)整堆棧的深度赊级,這個(gè)功能的主要用途是所有變量狀態(tài)可以快速回到方法開始執(zhí)行時(shí)候的樣子押框,然后你可以重新進(jìn)行一遍一遍執(zhí)行,這樣就可以在你關(guān)注的地方進(jìn)行多次調(diào)試理逊,但是在執(zhí)行過程中也會產(chǎn)生一些副作用橡伞,比如插入到數(shù)據(jù)庫里面的數(shù)據(jù)是無法刪除的!
9分布過濾
當(dāng)我們進(jìn)入(F5)方法的時(shí)候晋被,我們還可以訪問其外部庫(比如java.*)兑徘,我們可能不需要這個(gè)庫,就可以在Perference選項(xiàng)卡頁面添加一個(gè)過濾器來排除這個(gè)包羡洛。
10進(jìn)入挂脑、跳出和返回
我把這個(gè)放在最后一點(diǎn),在調(diào)試過程中欲侮,這些是必須要了解(最好掌握)的東西:
F5——進(jìn)入:移動到下一個(gè)步驟崭闲,如果當(dāng)前行有一個(gè)方法調(diào)用,該控件將會跳轉(zhuǎn)到被調(diào)用方法的第一行執(zhí)行威蕉。
F6——跳出:移動到下一行刁俭。如果在當(dāng)前行有方法調(diào)用,那么會直接移動到下一行執(zhí)行韧涨。不會進(jìn)入被調(diào)用方法體里面牍戚。
F7——返回:從當(dāng)前方法中跳出,繼續(xù)往下執(zhí)行虑粥。
F8——移動到下一個(gè)斷點(diǎn)處執(zhí)行翘魄。
來自:CSDN(張紅月/編譯)
鏈接:http://www.csdn.net/article/2012-09-03/2809495-Java-Debugging-Tips-with-Eclipse
原文:http://javapapers.com/core-java/top-10-java-debugging-tips-with-eclipse/
阿里Java高級大牛直播講解知識點(diǎn),分享知識舀奶,五大專題都是各位老師多年工作經(jīng)驗(yàn)的梳理和總結(jié)暑竟,帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知扣群Java大神高級架構(gòu)群:658362658備注好信息育勺!