![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SZyADNmNmYlNGOiZGM2gTZ3cDMwQmNlhjZ0QmYlNGNw8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
一、概述
Java的遠端debug,可以在本地打斷點,調試遠端程式。方法是修改JAVA_OPTS參數,使用Eclipse或IDEA等工具調試。
遠端調試有兩種方式:
- 主動連接配接調試:服務端配監控端口,IDE連接配接遠端端口。
- 被動連接配接調試:IDE設定監聽端口,等遠端連接配接本地端口。
注意本地和遠端的代碼要一緻,另外注意打開防火牆需要用到的端口。
二、主動連接配接調試
1. 說明
遠端服務需要使用配置啟動腳本:
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
啟動jar可以使用指令:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
參數說明:
- Xdebug :通知JVM工作在DEBUG模式
- Xrunjdwp:通知JVM使用Java debug wire protocol來運作調試程式
- transport:連接配接方式使用socket。如果是本機也可以使用共享記憶體
- server=y:目前調試服務端,值為n表示調試用戶端
- suspend=n:啟動時不中斷
- address:監聽的端口
注意jdk 版本不同時,指令會有所差別。
2. 操作步驟
2.2.1 IDEA 設定 remote configuration
Debugger mode 選擇 Attach to remote JVM,
Transport設定 Socket
Host設定 服務端IP
把下面的Command line arguments for remote JVM複制下來用來啟動伺服器端程式。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
注意根據實際情況,選擇右側的JDK版本。
2.2.2 伺服器啟動jar程式
## 參數必須在 -jar 之前java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your.jar
啟動java程式後日志會提示:
Listening for transport dt_socket at address: 5005
2.2.3 在idea設定斷點并啟動程式
這時就可以開發地在IDEA裡遠端調試Java程式啦。
在Eclipse裡也可以友善地進行設定:
三、被動連接配接調試
一般用來調試遠端程式無法啟動的問題,類似上面配置,在IDEA裡選擇 Listen to remote JVM,其它可以參照界面設定。我暫時用不到它,就沒有動手測試了。