在開發調試程序當碰到本地功能正常而測試環境出現問題時需要用到遠程調試的功能。現針對eclipse下遠程調試服務器上的web程序或者java程序作出總結
eclipse遠程調試java程序
第一步:遠程服務器上的java程序以調試模式啟動並指定調試端口
如下截圖在遠程服務器上用java命令以調試模式啟動dubbo服務的java程序並指定調試端口為9990(這個端口后面會用到)
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=9990,server=y,suspend=n -Xbootclasspath/a::/app/appsoft/taskpool/conf -jar taskpoolservice-0.0.1.jar com.psbc.cos.TaskpoolserviceApplication && tail -f nohup.out
nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=9990,server=y,suspend=n com.alibaba.dubbo.container.Main > /local/tmp/debug.logs 2>&1 &
第二步:在eclipse中配置遠程調試並打上斷點以debug模式啟動與服務器上同樣的程序(開始調試前需要確保本地服務代碼與遠程服務器上的代碼一致)
在eclipse的java啟動類中右鍵->Debug As->Debug Configurations
創建一個遠程調試服務
設置服務調試信息,注意端口與服務器上的服務調試商品保持一致並且本地到遠程服務器的網絡暢通,設置完成后點擊Debug將本地服務以調試模式啟動
啟動成功后會出現如下圖紅框內所示的圖標(調試完成后也可點擊該圖標斷開遠程調試)
如下圖所示為我本地接收到遠程服務器上的請求進而可以進行遠程調試的效果圖
eclipse遠程調試tomcat程序
在eclipse中遠程調試tomcat程序的方法與調試JAVA程序類似,不同之處在於遠程服務器啟動tomcat時加入相應調試JVM參數,由於時間原因這里不詳細說明,貼上網上一的參考鏈接:https://jingyan.baidu.com/article/0320e2c1f4ef6b1b87507b06.html
修改tomcat的啟動腳本startup.bat。復制startup.bat為startup-debug.bat,然后打開startup-debug.bat,找到call "%EXECUTABLE%" start %CMD_LINE_ARGS%這一行,修改為“call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%”,然后在上面添加三行:
set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=9000
set JPDA_SUSPEND=n
設置好服務器以debug模式啟動並指定端口后,仍然如前面所述在本地tomcat啟動參數中加入遠程調試參數並啟動即可對遠程環境上的相應程序進行調試
By the way:如果你的遠程linux服務器開啟了防火牆,且你在eclipse里開啟遠程調試時報錯connection refused,connect timeout,需要檢查一下是否未開通對應調試端口的防火牆訪問權限,按如下方式添加:
1、linux開放服務端口
vi /etc/sysconfig/iptables
加入如下內容
-A INPUT -p tcp -m tcp --dport 6001 -j ACCEPT
2、保存退出,重啟服務 service iptables restart