Eclipse 調試Bug之使用斷點的七大技巧


原文鏈接:http://xiaohuafyle.iteye.com/blog/1705494
調試竟然有這么多技巧,虧我以前竟不知道。。。
 
Eclipse這個開發工具為我們調試bug提供了非常便利的工具,斷點。可是,大部分經驗豐富的程序員並沒有能夠充分的掌握斷點的用法,以下,我總結了斷點的七個技巧供大家參考學習。  
  1、條件斷點 
  條件斷點,顧名思義就是一個有一定條件的斷點,只有滿足了用戶設置的條件,代碼才會在運行到斷點處時停止。 
  在斷點處點擊鼠標右鍵,選擇最后一個"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 
  遠程調試時本地的代碼修改可同步到遠程,但不會寫到遠程的文件里,也就是說本地修改會在下次啟動遠程程序時就沒有了,不會影響到下次使用時的遠程代碼。 
  7、異常斷點 
  經常遇見一些異常,然后程序就退出來了,要找到異常發生的地方就比較難了,還好可以打一個異常斷點      上圖中我們增加了一個NullPointException的異常斷點,當異常發生時,代碼會停在異常發生處,定位問題時應該比較有幫助。
  • 大小: 31.3 KB
  • 大小: 41.7 KB
  • 大小: 7.6 KB
  • 大小: 9.7 KB
  • 大小: 16.7 KB
  • 大小: 19.2 KB
  • 大小: 15.7 KB
  • 大小: 43.1 KB
  • 大小: 60.3 KB
  • 大小: 17.9 KB
  • 大小: 21.8 KB
  • 大小: 12.6 KB


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM