專案採用 Ant 編譯部署,團隊成員習慣 Eclipse 圖形化調試。本文記錄啟動 Tomcat JPDA 模式 + Eclipse Remote Java Application 連接的最簡配置,解決「無法在 Eclipse 中斷點調試」痛點。
JVM 開啟 JPDA (Java Platform Debugger Architecture) 監聽端口,Eclipse 作為 Debug Client 透過 Socket 連接,實現斷點、單步、變數檢視等完整調試功能。
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
cd D:\tomcat-5.5.9\bin
catalina jpda start
關鍵環境變數:
- JPDA_ADDRESS:監聽端口 (默認 8000)
- JPDA_TRANSPORT:傳輸協議 dt_socket (Socket 通訊)
- catalina jpda start:啟動 JPDA 模式
Tomcat Remote Debuglocalhost (或遠程服務器 IP)8000 (與 JPDA_ADDRESS 一致)Connected to the target VM 即連接成功。| 現象 | 原因 | 解決 |
|---|---|---|
| Connection refused | Tomcat 未啟動 JPDA、端口被佔用、防火牆攔截 | 檢查 catalina.out 含 Listening for transport dt_socket at address: 8000;netstat -an | grep 8000;開放防火牆 |
| 斷點不生效/顯示 "Line breakpoint not available" | 源碼與部署類別不一致 (未重新編譯部署) | Ant 重新 build → 部署 → 重啟 Tomcat JPDA;確保專案源碼為當前版本 |
| 變數顯示 "value not available" | JIT 優化導致局部變數被優化掉 | JVM 參數加入 -Xint (僅解釋執行) 或降低優化等級 |
| 調試卡頓/延遲高 | 網路延遲、大量斷點、遠程磁碟 IO | 減少斷點、本地源碼映射、關閉不必要的 Variables/Expressions 面板 |
出處:《Enjoy Web Dev With Tapestry》書籍啟發。