您好,登錄后才能下訂單哦!
Eclipse中怎么調(diào)試Java程序,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
第1條:不要調(diào)試太多
一個關(guān)于調(diào)試的瘋狂聲明作為開頭。但它必須是要說的!嘗試切分一下你那復(fù)雜的邏輯成多個獨立的單元,并編寫單元測試來檢測你代碼的正確性。我想像如下這樣的流程應(yīng)該是發(fā)生得非常頻繁的----一些人通過大型web應(yīng)用程序點擊、填寫多個表單、切換到不同的頁面、正在***的頁面上檢測工個計算邏輯和實現(xiàn)這個調(diào)試視圖中的大部分邏輯。在啟動你的tomcat之前總是問你自己:有沒有方法使用一個單元測試來檢測這些行為?你在過去這些時間可以不知道或已忘記這些,但從現(xiàn)在開始,我們將要關(guān)注一些eclipse的調(diào)試技巧,你會發(fā)現(xiàn)有大量的關(guān)于良好代碼設(shè)計的好東西。
- 斷點視圖 : 條件斷點
如果你只對應(yīng)用中的某部分感興趣的話,這個功能非常有用。例如,如果你要在第13次循環(huán)的時候檢查程序,或者在一個抽象父類中調(diào)試某些功能,而你只關(guān)注其中一個具體的實現(xiàn)。你可以在斷點視圖中設(shè)置條件,或者通過代碼旁邊的藍色斷點標記的右鍵菜單("Breakpoint Properties")設(shè)置。你可以在條件代碼片段為true的時候暫停程序,或者當代碼片段的值改變的時候掛起程序。
- 變量視圖:展示邏輯結(jié)構(gòu)
如果你需要在變量視圖查看一個Map對象或者List對象的值,對于eclipse的默認設(shè)置,一般并不是那么容易。假設(shè),你使用的是HashMap,你需要點擊遍歷各個實體條目,并面臨各種HashMap的實現(xiàn)細節(jié)。但是,在變量視圖上面有一個叫做“Show Logical Structure”的按鈕。它非常有用,尤其當你的對象的toString()方法所展示的信息并不友好的時候。我的老大在幾周前為我展示了這個功能。你知道,他經(jīng)常跟PowerPoint或者Excel打交道。對于我這么一個開發(fā)人員,多丟臉哦
未開啟“Show Logical Structure”
開啟“Show Logical Structure”
- 變量視圖:更改變量值...
當你需要稍微更改輸入信息的時候,不需要重新開始調(diào)試會話,只需在一個表格中輸入新的信息,你可以在調(diào)試階段直接修改你的變量的值。有寫時候,你可以節(jié)省一些時間,你可以通過這個功能,更加簡單的模擬一些怪異的情況。
- Display視圖
你知道“Display視圖”嗎?你可以在調(diào)試過程中,通過“Window” -> “Show View” -> “Display”來激活它?,F(xiàn)在,你的eclipse應(yīng)該是一個空白的新視圖。你可以使用這個視圖,輸入或者演算一些新的代碼。這些代碼在當前的調(diào)試位置的上下文環(huán)境中被執(zhí)行,這意味著,你可以使用所有變量甚至是內(nèi)容助手。要執(zhí)行你的代碼的話,只需標記它,并使用右鍵菜單或者CTRL+U(執(zhí)行)或者 CTRL+SHIFT+I (檢查).
- 導(dǎo)航: Drop to Frame
我想任何人都知道“Step Into”, “Step over”,而且可能也知道“Step return”. 這些是調(diào)試時的基本導(dǎo)航功能。我想提兩個我非常喜歡的導(dǎo)航的高級方法。***個是“Drop to Frame”. 使用這個特性你可以及時回退 你可以直接回退到運行過的java堆棧幀中某一幀。當我調(diào)試時,一不小心錯過了某個關(guān)注的代碼行時,我常常用這個回退一幀。使用“Drop to Frame”這個特性我可以簡單的重新運行某幀代碼。
- 導(dǎo)航: Step into Selection
第二個是“Step into Selection”. 這也是很簡單,但很多人使用的一個。要使用它,你只需要按 Ctrl+Alt 同時點擊一個你想運行到的方法名。非常方便,非??焖佟O啾取癝tep Into”這個非常方便,想想你像跟蹤進一個有很多參數(shù)的函數(shù),如果用“Step Into”你必須進入,退出每個參數(shù)計算過程,才能進入到你真正想進的函數(shù)。“Run to line”也是很棒的特性。只需要把光標放在你想運行到的哪一行前面,然后按“CTRL+R”就可以了。
- 導(dǎo)航器:使用鍵盤
如果避免使用鼠標的話,你的操作速度會更快。你至少應(yīng)該如下的快捷鍵:
F5 – “單步進入”
F6 – “單步執(zhí)行并跳過”
F7 – “單步執(zhí)行并返回”
F8 – “繼續(xù)執(zhí)行”
Ctrl+Shift+B – “添加斷點”
Ctrl+Shift+I – “檢查”
- 斷點視圖:Watchpoints
如果改變這個變量會有什么結(jié)果?! 有時候創(chuàng)建一個watchpoint對于調(diào)試會非常有用。調(diào)試器會停止,不管這個被觀察的字段是被修改還是被讀取 - 你可以自己來配置決定。你只需雙擊一個字段,然后你就可以在斷點視圖中看到watchpoint,并且可以編輯它的屬性。你甚至可以一個訪問次數(shù),這意味著當變量被訪問的次數(shù)達到這個數(shù)量的時候,調(diào)試器會停止。這對于普通的斷點也適用。
- 友好的可讀的對象
變量視圖是使用對象的toString方法來現(xiàn)實對應(yīng)的值。因為這個原因,如果提供友好的toString方法實現(xiàn),對調(diào)試來說會非常有用。在javadoc中關(guān)于java.lang.Object的默認toString實現(xiàn),也是這樣推薦的:
返回一個表示該對象的字符串。通常<code>toString</code>方法返回這么一個字符串,“字面表示”該對象。返回結(jié)果必須是一個簡潔卻富含可表示該對象的信息,并且友好可讀取。我們推薦所有的子類都覆蓋這個方法。 |
你可以參考commons-lang中的 ToStringBuilder。它提供一些功能來編寫 (引用自javadoc ) "良好并連貫” 的toString方法。
默認的ToString
默認的ToStringBuilder例子
ToStringBuilder例子 – 多行文本風格
如果你不能修改toString實現(xiàn),例如你現(xiàn)在使用框架或者一個外部的API,你可以有另外一個選擇,在Eclipse中創(chuàng)建一個“Detail Formatter”。你需要在變量視圖中右擊一個對象,并點擊“New Detail Formatter…”。然后你就可以輸入一些代碼,用于展現(xiàn)這個對象。
看完上述內(nèi)容,你們掌握Eclipse中怎么調(diào)試Java程序的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。