使用Myeclipse实现快速调试
記得剛剛畢業的時候,自己連斷點也不會打,當時還在用JCreate?,就連畢業設計也是用System.out?找?Bug?的,想想真的很笨。開始工作后,一個星期過去了,在一個?1?、?2?百萬行的系統中找?Bug?,我依然在用System.out?,當時最痛苦的就是修改代碼,每次找到疑似?Bug?,就輸出一下,然后重啟(那時也不知道代碼熱替換),直到有一天帶我的導師發現了這樣笨笨的調試?Bug?,才讓我第一次認識了斷點,也知道了代碼修改完了可以進行熱替換,?我這個中國教育的半犧牲品才算向美好生活邁進了一小步。
?
?
1、?條件斷點
斷點大家都比較熟悉,在Eclipse?Java?編輯區的行頭雙擊就會得到一個斷點,代碼會運行到此處時停止。
條件斷點,顧名思義就是一個有一定條件的斷點,只有滿足了用戶設置的條件,代碼才會在運行到斷點處時停止。
在斷點處點擊鼠標右鍵,選擇最后一個"Breakpoint?Properties"
斷點的屬性界面及各個選項的意思如下圖,
2、?變量斷點
斷點不僅能打在語句上,變量也可以接受斷點,
上圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時可以停止,當然變量斷點上也是可以加條件的,和上面的介紹的條件斷點的設置是一樣的。
3、?方法斷點
?
方法斷點就是將斷點打在方法的入口處,
方法斷點的特別之處在于它可以打在?JDK的源碼里,由于?JDK?在編譯時去掉了調試信息,所以普通斷點是不能打到里面的,但是方法斷點卻可以,可以通過這種方法查看方法的調用棧。
4、?改變變量值
代碼停在了斷點處,但是傳過來的值不正確,如何修改一下變量值保證代碼繼續走正確的流程,或是說有一個異常分支老是進不去,能不能調試時改一下條件,看一下異常分支代碼是否正確?
在Debug?視圖的?Variables?小窗口中,我們可以看到?mDestJarName?變量的值為?"F:\Study\eclipsepro\JarDir\jarHelp.jar?"
我們可以在變量上右鍵,選擇"Change?Value..."?在彈出的對話框中修改變量的值,
?
或是在下面的值查看窗口中修改,保用Ctr+S?保存后,變量值就會變成修改后的新值了。
5、?重新調試
?
這種調試的回退不是萬能的,只能在當前線程的棧幀中回退,也就說最多只能退回到當前線程的調用的開始處。
回退時,請在需要回退的線程方法上點右鍵,選擇?"Drop?to?Frame"
6、?遠程調試
用于調試不在本機上的程序,有兩種方式,
1、本機作為客戶端
2、本機作為服務端
使用遠程調試的前提是服務器端和客戶端的代碼是一致的。
?
本機作為客戶端
本機作客戶端比較常用,需要在遠端的服務器上的java程序在啟動時打開遠程調試開關,
服務器端需要加上虛擬機參數
1.5以前版本(1.5以后也可用):【-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 】
1.5及以上版本:【 -agentlib:jdwp=transport=dt_socket,server=y,address=8000】
F:\Study\eclipsepro\screensnap>java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar screensnap3.jar
連接時遠程服務器時,需要在Eclipse中新建一個遠程調試程序
這里有一個小地方需注意,連接上的時候貌似不能自動切換到Debug視圖,不要以為本機的調試程序沒有連接到服務器端。
?
本機作為服務端
同本機作為客戶端相比,只需要修改一下“Connection Type”
?
這時Eclipse會進入到等待連接的狀態
連接程序使用如下參數即可連接本機服務器,IP地址請用實現IP替換~~
【-agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000】
F:\Study\eclipsepro\screensnap>java -agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000 -jar screensnap3.jar
?
遠程調試時本地的代碼修改可同步到遠程,但不會寫到遠程的文件里,也就是說本地修改會在下次啟動遠程程序時就沒有了,不會影響到下次使用時的遠程代碼。
?
有關遠程調試更詳細點的介紹請參考【使用 Eclipse 遠程調試 Java 應用程序】
?
?
好像漏了一個斷點,異常斷點,補一下。
7、異常斷點
經常遇見一些異常,然后程序就退出來了,要找到異常發生的地方就比較難了,還好可以打一個異常斷點,
上圖中我們增加了一個NullPointException的異常斷點,當異常發生時,代碼會停在異常發生處,定位問題時應該比較有幫助。
????如何設置斷點? ???在MyEclipse編輯區的行頭雙擊就可以得到一個斷點,代碼會運行到此時停止。或者在行頭點擊鼠標右鍵,選擇“Toggle Breakpoint”就可以設置或者放棄一個斷點。
1、條件斷點 2、變量斷點 3、方法斷點 4、改變變量值 5、重新調試 6、遠程調試 7、異常斷點 (這7點內容參考網址:http://www.javaeye.com/topic/633824)
???注意:在Window->Preferences->MyEclipse->Application Servers->Tomcat 6->Launch下可將Tomcat 6的運行方式設定為Debug模式。
當為JSP設置了斷點并啟動Tomcat之后,訪問相應的JSP頁面將使MyEclipse進入Debug的Perspective,如圖:
???單擊中的各個按鈕可以進行調試操作,如恢復運行、逐步調試、跳出方法、進入方法等,也可以通過相應的快捷鍵來完成。 ???默認的Debug快捷鍵有F8——恢復,F5——進入方法,F6——跳過語句,F7——跳出方法。讀者可以進入Window->Preferences->Workbench->keys定制快捷鍵。
總結
以上是生活随笔為你收集整理的使用Myeclipse实现快速调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 捉虫记 C++转java Java中eq
- 下一篇: java基本数据类型转换