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