使用IDEA進行JAVA代碼的遠程Debug

在本地開發過程中,對代碼進行Debug能逐行對代碼邏輯進行調試,方便準備的排查問題。但是當代碼發佈到線上時,如果運行過程中出現異常,僅僅依靠日誌來排查問題的話,會比較耗時,而且經常由於日誌不全等原因而不能快速準確定位問題,而通過對JAVA代碼進行遠程Debug能很好的解決這個問題。
這篇博文主要介紹在IDEA中配置JAVA代碼遠程Debug,以及需要注意的事項。

我們知道,Java 程序是統一以字節碼的形式運行在Java 虛擬機上的,因爲都是字節碼文件,所以只要本地代碼和遠程服務器上的類文件相同,兩個JVM就可以通過調試協議進行通信。這裏需要注意的是,被調試的服務器需要開啓調試模式,服務器端的代碼和本地代碼必須保持一致,否則斷點無法進入。

在IDEA中進行JAVA代碼的遠程Debug,需要做兩步準備工作。

一、遠程服務器端的JAVA代碼開啓調試模式。

項目類型:Spring Boot項目
JDK版本:1.8.0_131
項目啓動命令:java -jar -Dspring.profiles.active=development -Xms1024m -Xmx1024m -Xmn600m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001 -XX:-OmitStackTraceInFastThrow -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:log/gc.log smart-building.jar
其中開啓遠程debug的配置是:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
參數說明:
jdwp:java debug wire protocol
transport=dt_socket:以socket協議進行通信
server=y:開啓調試服務端
address=4001:通信端口是4001

二、IDEA中的參數配置

1. 打開遠程Debug參數配置窗口

使用IDEA進行JAVA代碼的遠程Debug

2. 配置Debug參數,

Host表示遠程服務端的IP地址。
Port表示跟遠程服務端進行Debug通信的端口。
Command Line表示啓動參數,註明開啓遠程Debug。
Use module classpath 表示遠程服務對應的本地代碼路徑。
使用IDEA進行JAVA代碼的遠程Debug

3. 點擊Debug圖標,開始Debug

使用IDEA進行JAVA代碼的遠程Debug

當在IDEA控制檯輸出這行日誌,說明本地IDEA已連接上了遠程服務的Debug端口,接下來可以跟調試本地代碼一樣,開始遠程代碼Debug。
使用IDEA進行JAVA代碼的遠程Debug

三、注意事項

  1. 當開啓遠程Debug後,任何能走到斷點的操作都會導致業務阻塞到斷點位置,從而影響業務流程的正常執行,所以最好選擇沒什麼用戶操作的時候進行遠程Debug調試。
  2. 遠程Debug調試過程中,結束調試不會導致遠程業務流程終止,線上業務會繼續執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章