1.前言
對于已部署一些線上上或者非本機環境下的tomcat項目,可能出現奇奇怪怪的問題,而這些問題在本地環境卻又很難重制,遠端調試則能在本機環境調試已部署的應用,一定程度上友善定位問題。
此文檔隻針對Windows系統下調試Tomcat部署的應用,對基本的遠端調試進行說明。
linux系統下的配置邏輯也一樣的。
此文檔涉及Tomcat,IDE(2種。IDEA,STS(Eclipse))的版本資訊如下:
apache-tomcat-8.0.48
IDEA 2018.2
STS 3.9.5.RELEASE
2.Tomcat配置
(如果沒有配置JAVA_OPTS,使用catalina jpda start啟動時會預設使用端口8000,不推薦,建議自行配置)
在catalina.bat中指定位置增加JAVA_OPTS的配置,如下:

(
備選:
如果添加JAVA_OPTS後啟動不成功,則恢複檔案,改為配置JPDA_OPTS
)
注意:
- address處需要指明目前tomcat所在機器的IP位址;如果沒有指定位址,則預設是127.0.0.1或者localhost,如果此時是在其他機器遠端調試,則會出現類似“Connnection refused”的問題。(在沒有指明tomcat所在機器的IP位址的情況下,此時采用telnet 192.168.12.161 port可能會失敗,而是用telnet localhost port或者telnet 127.0.0.1 port則成功。)
- address處配置的端口不能跟Tomcat使用的端口一樣。
- set JAVA_OPTS的值是從IDEA或者Eclipse的remote配置中拷貝的。
配置完後,将war包部署,并使用catalina jpda start指令(調試模式,用于遠端調試)啟動,如下:
啟動後會彈出tomcat框,如下(第一行會有端口監聽的提示,是之前在catalina.bat配置好的端口):
(配好後,通過starup.bat啟動也有同樣效果)
3.IDEA配置與Debug
将上述Tomcat的配置,使用在IDEA上,如下:
配置好後,使用Debug方式啟動:
此時可以在代碼中加斷點進行遠端調試,就像本地調試代碼一樣。
4.Eclipse配置與Debug
Eclipse的配置比較簡單。
打開Eclipse的Debug配置視窗:
彈出以下視窗,新加“Remote Java Application”配置項。選中工程,配置遠端ip,端口。
此時 ,在代碼設定斷點,即可進行調試。
如果需要斷開遠端調試,則點選下圖紅色框的“Disconnect”圖示即可。
5.注意與參考
注意:
- 當然,本地調試的代碼要與遠端部署的包版本一緻。
- 同一時刻,盡量隻使用一個IDE在調試,不然可能會出現“Connection refused”的問題。
此時使用Telnet會有以下提示:
- 使用過程中可能出現逾時。
IDEA的配置參考此連結:
https://stackoverflow.com/questions/6733849/remote-debugging-in-intellij-tomcat
6.思考
遠端調試不局限于tomcat,其他支援遠端debug的web容器可以驗證下。
Spring Boot的jar,類似如下,也可以進行遠端調試:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8000" -jar springBoot.jar