天天看點

java 斷點調試_java設定斷點調試技巧

1、 條件斷點

斷點大家都比較熟悉,在Eclipse Java 編輯區的行頭輕按兩下就會得到一個斷點,代碼會運作到此處時停止。

條件斷點,顧名思義就是一個有一定條件的斷點,隻有滿足了使用者設定的條件,代碼才會在運作到斷點處時停止。

在斷點處點選滑鼠右鍵,選擇最後一個"Breakpoint Properties"

java 斷點調試_java設定斷點調試技巧

斷點的屬性界面及各個選項的意思如下圖,

java 斷點調試_java設定斷點調試技巧

2、 變量斷點

斷點不僅能打在語句上,變量也可以接受斷點,

java 斷點調試_java設定斷點調試技巧

上圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時可以停止,當然變量斷點上也是可以加條件的,和上面的介紹的條件斷點的設定是一樣的。

3、 方法斷點

方法斷點就是将斷點打在方法的入口處,

java 斷點調試_java設定斷點調試技巧

方法斷點的特别之處在于它可以打在 JDK的源碼裡,由于 JDK 在編譯時去掉了調試資訊,是以普通斷點是不能打到裡面的,但是方法斷點卻可以,可以通過這種方法檢視方法的調用棧。

4、 改變變量值

代碼停在了斷點處,但是傳過來的值不正确,如何修改一下變量值保證代碼繼續走正确的流程,或是說有一個異常分支老是進不去,能不能調試時改一下條件,看一下異常分支代碼是否正确?

在Debug 視圖的 Variables 小視窗中,我們可以看到 mDestJarName 變量的值為 "F:\Study\eclipsepro\JarDir\jarHelp.jar "

java 斷點調試_java設定斷點調試技巧

我們可以在變量上右鍵,選擇"Change Value..." 在彈出的對話框中修改變量的值,

java 斷點調試_java設定斷點調試技巧

或是在下面的值檢視視窗中修改,保用Ctr+S 儲存後,變量值就會變成修改後的新值了。

java 斷點調試_java設定斷點調試技巧

5、 重新調試

這種調試的回退不是萬能的,隻能在目前線程的棧幀中回退,也就說最多隻能退回到目前線程的調用的開始處。

回退時,請在需要回退的線程方法上點右鍵,選擇 "Drop to Frame"

java 斷點調試_java設定斷點調試技巧

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中建立一個遠端調試程式

java 斷點調試_java設定斷點調試技巧

這裡有一個小地方需注意,連接配接上的時候貌似不能自動切換到Debug視圖,不要以為本機的調試程式沒有連接配接到伺服器端。

本機作為服務端

同本機作為用戶端相比,隻需要修改一下“Connection Type”

java 斷點調試_java設定斷點調試技巧

這時Eclipse會進入到等待連接配接的狀态

java 斷點調試_java設定斷點調試技巧

連接配接程式使用如下參數即可連接配接本機伺服器,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、異常斷點

經常遇見一些異常,然後程式就退出來了,要找到異常發生的地方就比較難了,還好可以打一個異常斷點,

java 斷點調試_java設定斷點調試技巧

上圖中我們增加了一個NullPointException的異常斷點,當異常發生時,代碼會停在異常發生處,定位問題時應該比較有幫助。