IntelliJ IDEA 遠(yuǎn)程調(diào)試 Tomcat,今天程序出現(xiàn)了一個(gè)bug,一臺服務(wù)器能運(yùn)行,在另一臺服務(wù)器不能運(yùn)行,這回感覺比較坑了,好在,idea竟然有遠(yuǎn)程調(diào)試的功能實(shí)在忍不住試了一下,果然完美的調(diào)試出了錯(cuò)誤??!
聲明文章轉(zhuǎn)載自(部分改動):https://github.com/bsqql123/IntelliJ-IDEA-Tutorial/blob/newMaster/remote-debugging.md
準(zhǔn)備工作
明確遠(yuǎn)程服務(wù)器的 IP 地址,比如我是:192.168.92.128
關(guān)掉服務(wù)器防火墻:service iptables stop
本地 Remote Server 配置
添加 Remote Server,如下圖
復(fù)制 Remote Server 自動生成的 JVM 參數(shù),等下有用,如下圖,比如我的是:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
如下圖,在 Host 添加服務(wù)器的 IP 地址:192.168.92.128。

如圖host設(shè)置為你遠(yuǎn)程的服務(wù)器地址,
port為你的tomcat的端口

把剛剛復(fù)制參數(shù)加個(gè)前綴,變成:Linux(有單引號):export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
Windows(沒有單引號):set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
服務(wù)器 Tomcat 配置
以 Linux 環(huán)境為例
Tomcat 安裝在 /usr/program/tomcat7
Tomcat 的執(zhí)行程序:/usr/program/tomcat7/bin/catalina.sh
編輯 Tomcat 執(zhí)行程序:vim /usr/program/tomcat7/bin/catalina.sh
(Windows 是編輯:catalina.bat)在該文件的最上面,添加我們剛剛復(fù)制的那句話:export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
。
如果你的項(xiàng)目有特殊 JVM 參數(shù),那你就把你的那部分參數(shù)和這部分參數(shù)合并在一起。
如下圖所示:
服務(wù)器 Jetty 配置
同樣是 Linux 環(huán)境
jetty 不像Tomcat那樣需要安裝,只要有jetty的jar包就可以啟動我們想要啟動的應(yīng)用。
在啟動應(yīng)用的時(shí)候加入之前上邊我們copy的-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
就可以了。就像這樣:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar {your jetty path} {your port} --path {your war} 1>/dev/null 2>&1 &
開始調(diào)試
啟動服務(wù)器 Tomcat
啟動本地 Remote Server
如果可以看到如下圖效果,表示已經(jīng)連接成功了,接下里就是跟往常一樣,在本地代碼上設(shè)置斷點(diǎn),然后你訪問遠(yuǎn)程的地址,觸發(fā)到該代碼自動就會在本地停住。



