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

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

咱們知道,Java 程序是統一以字節碼的形式運行在Java 虛擬機上的,由於都是字節碼文件,因此只要本地代碼和遠程服務器上的類文件相同,兩個JVM就能夠經過調試協議進行通訊。這裏須要注意的是,被調試的服務器須要開啓調試模式,服務器端的代碼和本地代碼必須保持一致,不然斷點沒法進入。spring

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

1、遠程服務器端的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:通訊端口是4001socket

2、IDEA中的參數配置

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

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

2. 配置Debug參數,

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

3. 點擊Debug圖標,開始Debug

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

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

3、注意事項

  1. 當開啓遠程Debug後,任何能走到斷點的操做都會致使業務阻塞到斷點位置,從而影響業務流程的正常執行,因此最好選擇沒什麼用戶操做的時候進行遠程Debug調試。
  2. 遠程Debug調試過程當中,結束調試不會致使遠程業務流程終止,線上業務會繼續執行。
相關文章
相關標籤/搜索