Eclipse這個開發工具爲我們調試bug提供了非常便利的工具,斷點。可是,大部分經驗豐富的程序員並沒有能夠充分的掌握斷點的用法,以下,我總結了斷點的七個技巧供大家參考學習。
[b]1、條件斷點[/b]
條件斷點,顧名思義就是一個有一定條件的斷點,只有滿足了用戶設置的條件,代碼纔會在運行到斷點處時停止。
在斷點處點擊鼠標右鍵,選擇最後一個"Breakpoint Properties"
[img]http://dl.iteye.com/upload/attachment/0075/6283/8e9ba287-ab61-398f-afc2-4c71a885e5c3.jpg[/img]
斷點的屬性界面及各個選項的意思如下圖:
[img]http://dl.iteye.com/upload/attachment/0075/6285/32f0c635-1a1d-3f63-972a-64e37fc400f6.jpg[/img]
[b]2、變量斷點[/b]
斷點不僅能打在語句上,變量也可以接受斷點
[img]http://dl.iteye.com/upload/attachment/0075/6287/7c358f66-ed42-3c3a-a458-bcd6043e3c11.jpg[/img]
上圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時可以停止,當然變量斷點上也是可以加條件的,和上面的介紹的條件斷點的設置是一樣的。
[b]3、方法斷點[/b]
方法斷點就是將斷點打在方法的入口處
[img]http://dl.iteye.com/upload/attachment/0075/6290/361d81fd-0297-3715-b049-4489bc2baf66.jpg[/img]
方法斷點的特別之處在於它可以打在 JDK的源碼裏,由於 JDK 在編譯時去掉了調試信息,所以普通斷點是不能打到裏面的,但是方法斷點卻可以,可以通過這種方法查看方法的調用棧。
[b]4、改變變量值[/b]
代碼停在了斷點處,但是傳過來的值不正確,如何修改一下變量值保證代碼繼續走正確的流程,或是說有一個異常分支老是進不去,能不能調試時改一下條件,看一下異常分支代碼是否正確?
在Debug 視圖的 Variables 小窗口中,我們可以看到 mDestJarName 變量的值爲 " F:\Study\eclipsepro\JarDir\jarHelp.jar "
[img]http://dl.iteye.com/upload/attachment/0075/6293/68ab5ff6-2054-3776-9d6e-c420aba723e9.jpg[/img]
我們可以在變量上右鍵,選擇"Change Value..." 在彈出的對話框中修改變量的值
[img]http://dl.iteye.com/upload/attachment/0075/6295/787c1105-23e7-3f54-a6ef-e239dd3fe572.jpg[/img]
或是在下面的值查看窗口中修改,保用Ctr+S 保存後,變量值就會變成修改後的新值了。
[img]http://dl.iteye.com/upload/attachment/0075/6297/b1ce20df-0299-383b-9f9b-e1ff78e5e8cd.jpg[/img]
[b]5、重新調試[/b]
這種調試的回退不是萬能的,只能在當前線程的棧幀中回退,也就說最多隻能退回到當前線程的調用的開始處。
回退時,請在需要回退的線程方法上點右鍵,選擇 "Drop to Frame"
[img]http://dl.iteye.com/upload/attachment/0075/6299/0d6f2d6f-7788-311a-bf55-671fad1294ea.jpg[/img]
[b]6、遠程調試[/b]
用於調試不在本機上的程序,有兩種方式:
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中新建一個遠程調試程序
[img]http://dl.iteye.com/upload/attachment/0075/6301/c4b1b97f-3c81-3d83-b275-69a35b0d7787.jpg[/img]
這裏有一個小地方需注意,連接上的時候貌似不能自動切換到Debug視圖,不要以爲本機的調試程序沒有連接到服務器端。
本機作爲服務端
同本機作爲客戶端相比,只需要修改一下“Connection Type”
[img]http://dl.iteye.com/upload/attachment/0075/6303/d805a489-943a-3a03-803b-afcbddf38435.jpg[/img]
這時Eclipse會進入到等待連接的狀態
[img]http://dl.iteye.com/upload/attachment/0075/6305/2dd73a88-1df2-3aa7-a725-958e69fce1f0.jpg[/img]
連接程序使用如下參數即可連接本機服務器,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
遠程調試時本地的代碼修改可同步到遠程,但不會寫到遠程的文件裏,也就是說本地修改會在下次啓動遠程程序時就沒有了,不會影響到下次使用時的遠程代碼。
[b]7、異常斷點[/b]
經常遇見一些異常,然後程序就退出來了,要找到異常發生的地方就比較難了,還好可以打一個異常斷點
[img]http://dl.iteye.com/upload/attachment/0075/6308/a35b761f-0e53-366a-9d8f-79226ac8c133.jpg[/img]
上圖中我們增加了一個NullPointException的異常斷點,當異常發生時,代碼會停在異常發生處,定位問題時應該比較有幫助。
Eclipse 調試Bug之使用斷點的七大技巧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
內網映射工具之EchoSite
FloatDreamed
2020-07-07 21:41:32
Git新建遠程倉庫和本地倉庫的協作管理
四片叶子的三叶草
2020-06-17 02:44:34
ubuntu下用GNU(gcc/g++)進行編譯
四片叶子的三叶草
2020-06-17 02:44:34
Git的本地倉庫遷移到遠程倉庫
四片叶子的三叶草
2020-06-17 02:44:34
Win10 + VS2017 + Ceres配置
四片叶子的三叶草
2020-06-12 18:55:18
Myeclipse工程轉Eclipse工程技巧
iteye_15772
2020-02-25 10:52:53
Intelli J Idea 激活
敲木鱼的码崽
2020-02-20 22:51:38
獲取windows文件夾下指定文件的名稱列表
四片叶子的三叶草
2019-04-26 15:18:43
刪除右鍵“在Visual Studio中打開”
四片叶子的三叶草
2019-02-26 14:43:30
在TeXstudio內實現中文編譯
四片叶子的三叶草
2019-01-25 22:28:43
從Mac轉投Ubuntu進行Android開發
blue_zy
2018-11-26 09:36:27
Ubuntu使用魅族手機進行Debug
blue_zy
2018-11-26 09:36:27
M2E plugin execution not covered
iteye_15570
2018-09-12 09:50:17
Eclipse管理Github上的項目配置
iteye_15570
2018-09-09 21:39:01
SVN 兩種常用分支Branch方式
iteye_15570
2018-09-09 21:39:01