使用IDEA進行JAVA代碼的遠程Debug
阿新 • • 發佈:2019-05-15
tail 代碼發布 comm .com 阻塞 過程 啟動參數 dev 排查 在本地開發過程中,對代碼進行Debug能逐行對代碼邏輯進行調試,方便準備的排查問題。但是當代碼發布到線上時,如果運行過程中出現異常,僅僅依靠日誌來排查問題的話,會比較耗時,而且經常由於日誌不全等原因而不能快速準確定位問題,而通過對JAVA代碼進行遠程Debug能很好的解決這個問題。
這篇博文主要介紹在IDEA中配置JAVA代碼遠程Debug,以及需要註意的事項。
其中開啟遠程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 Use module classpath 表示遠程服務對應的本地代碼路徑。
這篇博文主要介紹在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
-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參數配置窗口
2. 配置Debug參數,
Host表示遠程服務端的IP地址。
Port表示跟遠程服務端進行Debug通信的端口。
Command Line表示啟動參數,註明開啟遠程Debug。
3. 點擊Debug圖標,開始Debug
當在IDEA控制臺輸出這行日誌,說明本地IDEA已連接上了遠程服務的Debug端口,接下來可以跟調試本地代碼一樣,開始遠程代碼Debug。
三、註意事項
- 當開啟遠程Debug後,任何能走到斷點的操作都會導致業務阻塞到斷點位置,從而影響業務流程的正常執行,所以最好選擇沒什麽用戶操作的時候進行遠程Debug調試。
- 遠程Debug調試過程中,結束調試不會導致遠程業務流程終止,線上業務會繼續執行。
使用IDEA進行JAVA代碼的遠程Debug