eclipse除錯的方法和技巧
eclipse除錯圖示所代表的含義:
Step into 單步進入-將進入執行的方法內部繼續執行。
Step over 單步前進-執行下一步。
Step return – 單步退出-跳出正在執行的方法。
Drop to frame – 跳到正在執行的方法的第一句程式碼。
Resume : 執行到下一個斷點。
Terminate:停止除錯。程式將停止執行。
1、在執行時,可以選中某個變數,然後使用:Watch。就可以在Expressions視窗中看到此變數的值。
2、在Breakpoints檢視中,可以使用Remove All Breakpoints將所有斷點一次清除。
下面是除錯的幾種方法:
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
遠端除錯時本地的程式碼修改可同步到遠端,但不會寫到遠端的檔案裡,也就是說本地修改會在下次啟動遠端程式時就沒有了,不會影響到下次使用時的遠端程式碼。
7、異常斷點
經常遇見一些異常,然後程式就退出來了,要找到異常發生的地方就比較難了,還好可以打一個異常斷點,
上圖中我們增加了一個NullPointException的異常斷點,當異常發生時,程式碼會停在異常發生處,定位問題時應該比較有幫助。
相關文章
- IDEA、ECLIPSE遠端除錯IdeaEclipse除錯
- chrome的除錯技巧Chrome除錯
- 使用Eclipse除錯PHP應用Eclipse除錯PHP
- console 除錯技巧除錯
- Chrome 除錯技巧Chrome除錯
- css除錯技巧CSS除錯
- Xcode 除錯技巧XCode除錯
- 很好用的 UI 除錯技巧UI除錯
- Eclipse除錯找不到源的解決辦法Eclipse除錯
- 前端js除錯技巧前端JS除錯
- VC++除錯技巧C++除錯
- JavaScript 反除錯技巧JavaScript除錯
- docker 容器除錯技巧Docker除錯
- 淺談1——用Eclipse除錯JAVA程式Eclipse除錯Java
- WWDC 2018:效率提升爆表的 Xcode 和 LLDB 除錯技巧XCodeLLDB除錯
- 筆記|軟體除錯的技巧筆記除錯
- 使用Eclipse進行PHP的伺服器端除錯EclipsePHP伺服器除錯
- React Native / React除錯技巧React Native除錯
- Xcode除錯技巧之:LLDBXCode除錯LLDB
- 5 個 JavaScript 除錯技巧JavaScript除錯
- debug技巧之本地除錯除錯
- 推薦幾個不錯的console除錯技巧除錯
- 一路踩坑,被迫聊聊 C# 程式碼除錯技巧和遠端除錯C#除錯
- 使用 Eclipse 遠端除錯 Java 應用程式(mark)Eclipse除錯Java
- 【除錯技巧】Dialog dismiss 崩潰除錯
- debug技巧之使用Arthes除錯除錯
- debug技巧之遠端除錯除錯
- 谷歌瀏覽器除錯技巧谷歌瀏覽器除錯
- FioriLaunchpadTile點選後跳轉的除錯技巧除錯
- Apache httpclient的execute方法除錯ApacheHTTPclient除錯
- Android 中 WebView 的除錯方法AndroidWebView除錯
- python五種除錯或排錯的方法Python除錯
- 動態除錯及LLDB技巧集合除錯LLDB
- Postman除錯技巧之介面簽名Postman除錯
- 12個Visual Studio除錯效率技巧除錯
- 前端Chrome除錯技巧最全彙總前端Chrome除錯
- Android Studio程式碼除錯技巧篇Android除錯
- 【Java】Debug斷點除錯常用技巧Java斷點除錯
- Java安全之jar包除錯技巧JavaJAR除錯