Java程序員應(yīng)該知道的10個(gè)調(diào)試技巧

調(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備注好信息育勺!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末但荤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涧至,更是在濱河造成了極大的恐慌腹躁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件南蓬,死亡現(xiàn)場離奇詭異纺非,居然都是意外死亡哑了,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門烧颖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弱左,“玉大人,你說我怎么就攤上這事炕淮〔鸹穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵涂圆,是天一觀的道長们镜。 經(jīng)常有香客問我,道長润歉,這世上最難降的妖魔是什么模狭? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮踩衩,結(jié)果婚禮上嚼鹉,老公的妹妹穿的比我還像新娘。我一直安慰自己九妈,他們只是感情好反砌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布雾鬼。 她就那樣靜靜地躺著萌朱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪策菜。 梳的紋絲不亂的頭發(fā)上晶疼,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音又憨,去河邊找鬼翠霍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蠢莺,可吹牛的內(nèi)容都是我干的寒匙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躏将,長吁一口氣:“原來是場噩夢啊……” “哼锄弱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祸憋,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤会宪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蚯窥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸鹅,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塞帐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巍沙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葵姥。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赎瞎,靈堂內(nèi)的尸體忽然破棺而出牌里,到底是詐尸還是另有隱情,我是刑警寧澤务甥,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布牡辽,位于F島的核電站,受9級特大地震影響敞临,放射性物質(zhì)發(fā)生泄漏态辛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一挺尿、第九天 我趴在偏房一處隱蔽的房頂上張望奏黑。 院中可真熱鬧,春花似錦编矾、人聲如沸熟史。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹂匹。三九已至,卻和暖如春凹蜈,著一層夾襖步出監(jiān)牢的瞬間限寞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工仰坦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留履植,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓悄晃,卻偏偏與公主長得像玫霎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子妈橄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容