自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Eclipse調(diào)試Java程序的10個(gè)技巧

開發(fā) 后端
假設(shè)我每天花費(fèi)1小時(shí)在調(diào)試我的應(yīng)用程序上的話,那累積起來的話也是很大量的時(shí)間。由于這個(gè)原因,用這些時(shí)間來重視并了解所有使我們調(diào)試更方便的功能。

你應(yīng)該看過一些如《關(guān)于調(diào)試的N件事》這類很流行的帖子 。假設(shè)我每天花費(fèi)1小時(shí)在調(diào)試我的應(yīng)用程序上的話,那累積起來的話也是很大量的時(shí)間。由于這個(gè)原因,用這些時(shí)間來重視并了解所有使我們調(diào)試更方便的功能。那能為你省下一些時(shí)間,也將會(huì)使你的生活更安逸、輕松。同時(shí)也表明其它關(guān)于此主題的帖子也是很有價(jià)值的。

第1條:不要調(diào)試太多

一個(gè)關(guān)于調(diào)試的瘋狂聲明作為開頭。但它必須是要說的!嘗試切分一下你那復(fù)雜的邏輯成多個(gè)獨(dú)立的單元,并編寫單元測試來檢測你代碼的正確性。我想像如下這樣的流程應(yīng)該是發(fā)生得非常頻繁的----一些人通過大型web應(yīng)用程序點(diǎn)擊、填寫多個(gè)表單、切換到不同的頁面、正在***的頁面上檢測工個(gè)計(jì)算邏輯和實(shí)現(xiàn)這個(gè)調(diào)試視圖中的大部分邏輯。在啟動(dòng)你的tomcat之前總是問你自己:有沒有方法使用一個(gè)單元測試來檢測這些行為?你在過去這些時(shí)間可以不知道或已忘記這些,但從現(xiàn)在開始,我們將要關(guān)注一些eclipse的調(diào)試技巧,你會(huì)發(fā)現(xiàn)有大量的關(guān)于良好代碼設(shè)計(jì)的好東西。

- 斷點(diǎn)視圖 : 條件斷點(diǎn)

如果你只對應(yīng)用中的某部分感興趣的話,這個(gè)功能非常有用。例如,如果你要在第13次循環(huán)的時(shí)候檢查程序,或者在一個(gè)抽象父類中調(diào)試某些功能,而你只關(guān)注其中一個(gè)具體的實(shí)現(xiàn)。你可以在斷點(diǎn)視圖中設(shè)置條件,或者通過代碼旁邊的藍(lán)色斷點(diǎn)標(biāo)記的右鍵菜單("Breakpoint Properties")設(shè)置。你可以在條件代碼片段為true的時(shí)候暫停程序,或者當(dāng)代碼片段的值改變的時(shí)候掛起程序。

Conditional Breakpoints
Conditional Breakpoints II 

- 變量視圖:展示邏輯結(jié)構(gòu)

如果你需要在變量視圖查看一個(gè)Map對象或者List對象的值,對于eclipse的默認(rèn)設(shè)置,一般并不是那么容易。假設(shè),你使用的是HashMap,你需要點(diǎn)擊遍歷各個(gè)實(shí)體條目,并面臨各種HashMap的實(shí)現(xiàn)細(xì)節(jié)。但是,在變量視圖上面有一個(gè)叫做“Show Logical Structure”的按鈕。它非常有用,尤其當(dāng)你的對象的toString()方法所展示的信息并不友好的時(shí)候。我的老大在幾周前為我展示了這個(gè)功能。你知道,他經(jīng)常跟PowerPoint或者Excel打交道。對于我這么一個(gè)開發(fā)人員,多丟臉哦 [[69966]]

未開啟“Show Logical Structure” 

Logical Structure I 

開啟“Show Logical Structure” 

Logical Structure II 

- 變量視圖:更改變量值...

當(dāng)你需要稍微更改輸入信息的時(shí)候,不需要重新開始調(diào)試會(huì)話,只需在一個(gè)表格中輸入新的信息,你可以在調(diào)試階段直接修改你的變量的值。有寫時(shí)候,你可以節(jié)省一些時(shí)間,你可以通過這個(gè)功能,更加簡單的模擬一些怪異的情況。

Change Value

- Display視圖

你知道“Display視圖”嗎?你可以在調(diào)試過程中,通過“Window” -> “Show View” -> “Display”來激活它。現(xiàn)在,你的eclipse應(yīng)該是一個(gè)空白的新視圖。你可以使用這個(gè)視圖,輸入或者演算一些新的代碼。這些代碼在當(dāng)前的調(diào)試位置的上下文環(huán)境中被執(zhí)行,這意味著,你可以使用所有變量甚至是內(nèi)容助手。要執(zhí)行你的代碼的話,只需標(biāo)記它,并使用右鍵菜單或者CTRL+U(執(zhí)行)或者 CTRL+SHIFT+I (檢查).

Display View 

- 導(dǎo)航: Drop to Frame

我想任何人都知道“Step Into”, “Step over”,而且可能也知道“Step return”. 這些是調(diào)試時(shí)的基本導(dǎo)航功能。我想提兩個(gè)我非常喜歡的導(dǎo)航的高級方法。***個(gè)是“Drop to Frame”. 使用這個(gè)特性你可以及時(shí)回退 [[69966]]  你可以直接回退到運(yùn)行過的java堆棧幀中某一幀。當(dāng)我調(diào)試時(shí),一不小心錯(cuò)過了某個(gè)關(guān)注的代碼行時(shí),我常常用這個(gè)回退一幀。使用“Drop to Frame”這個(gè)特性我可以簡單的重新運(yùn)行某幀代碼。

Drop to Frame

#p#

- 導(dǎo)航: Step into Selection

第二個(gè)是“Step into Selection”. 這也是很簡單,但很多人使用的一個(gè)。要使用它,你只需要按 Ctrl+Alt 同時(shí)點(diǎn)擊一個(gè)你想運(yùn)行到的方法名。非常方便,非常快速。相比“Step Into”這個(gè)非常方便,想想你像跟蹤進(jìn)一個(gè)有很多參數(shù)的函數(shù),如果用“Step Into”你必須進(jìn)入,退出每個(gè)參數(shù)計(jì)算過程,才能進(jìn)入到你真正想進(jìn)的函數(shù)。“Run to line”也是很棒的特性。只需要把光標(biāo)放在你想運(yùn)行到的哪一行前面,然后按“CTRL+R”就可以了。

Step Into Selection

- 導(dǎo)航器:使用鍵盤

如果避免使用鼠標(biāo)的話,你的操作速度會(huì)更快。你至少應(yīng)該如下的快捷鍵:

F5 – “單步進(jìn)入”

F6 – “單步執(zhí)行并跳過”

F7 – “單步執(zhí)行并返回”

F8 – “繼續(xù)執(zhí)行”

Ctrl+Shift+B – “添加斷點(diǎn)”

Ctrl+Shift+I – “檢查”

- 斷點(diǎn)視圖:Watchpoints

如果改變這個(gè)變量會(huì)有什么結(jié)果?! 有時(shí)候創(chuàng)建一個(gè)watchpoint對于調(diào)試會(huì)非常有用。調(diào)試器會(huì)停止,不管這個(gè)被觀察的字段是被修改還是被讀取 - 你可以自己來配置決定。你只需雙擊一個(gè)字段,然后你就可以在斷點(diǎn)視圖中看到watchpoint,并且可以編輯它的屬性。你甚至可以一個(gè)訪問次數(shù),這意味著當(dāng)變量被訪問的次數(shù)達(dá)到這個(gè)數(shù)量的時(shí)候,調(diào)試器會(huì)停止。這對于普通的斷點(diǎn)也適用。

Watch Point 

- 友好的可讀的對象

變量視圖是使用對象的toString方法來現(xiàn)實(shí)對應(yīng)的值。因?yàn)檫@個(gè)原因,如果提供友好的toString方法實(shí)現(xiàn),對調(diào)試來說會(huì)非常有用。在javadoc中關(guān)于java.lang.Object的默認(rèn)toString實(shí)現(xiàn),也是這樣推薦的:

返回一個(gè)表示該對象的字符串。通常<code>toString</code>方法返回這么一個(gè)字符串,“字面表示”該對象。返回結(jié)果必須是一個(gè)簡潔卻富含可表示該對象的信息,并且友好可讀取。我們推薦所有的子類都覆蓋這個(gè)方法。

你可以參考commons-lang中的 ToStringBuilder。它提供一些功能來編寫 (引用自javadoc ) "良好并連貫” 的toString方法。

默認(rèn)的ToString

Default-ToString 

默認(rèn)的ToStringBuilder例子

ReflectionToStringBuilder 

ToStringBuilder例子 – 多行文本風(fēng)格

ReflectionToStringBuilderMultiLine 

如果你不能修改toString實(shí)現(xiàn),例如你現(xiàn)在使用框架或者一個(gè)外部的API,你可以有另外一個(gè)選擇,在Eclipse中創(chuàng)建一個(gè)“Detail Formatter”。你需要在變量視圖中右擊一個(gè)對象,并點(diǎn)擊“New Detail Formatter…”。然后你就可以輸入一些代碼,用于展現(xiàn)這個(gè)對象。

原文鏈接:http://www.oschina.net/translate/again-10-tips-on-java-debugging-with-eclipse

責(zé)任編輯:張偉 來源: oschina
相關(guān)推薦

2013-06-03 11:24:45

程序調(diào)試Java

2009-06-03 14:42:21

Eclipse調(diào)試調(diào)試Java程序

2009-06-19 16:36:29

Java程序調(diào)試

2009-06-18 15:33:40

2011-02-22 16:09:53

Eclipse調(diào)試

2017-03-07 14:26:19

Eclipse技巧效率

2018-03-15 09:20:00

前端JSconsole

2015-07-27 09:36:09

storyboard

2009-10-27 09:09:06

Eclipse技巧

2019-09-26 08:33:51

Nginx技術(shù)Java

2014-12-03 10:04:49

Eclipse

2015-12-21 10:54:37

Docker云計(jì)算

2016-01-18 11:03:58

程序員搜索技巧

2010-11-30 09:06:28

Visual Stud

2020-05-25 15:40:23

IntelliJ IDEclipse強(qiáng)Java

2009-06-04 20:45:11

Eclipse插件安裝Eclipse插件使用

2020-09-23 09:13:47

Docker

2019-04-30 09:40:41

Windows 10技巧Windows

2012-11-23 13:14:52

2025-04-03 08:27:00

Python代碼開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)