1. 程式人生 > >使用Eclipse遠端除錯Linux伺服器Tomcat專案

使用Eclipse遠端除錯Linux伺服器Tomcat專案

工作這些年,經常會出現這樣的情況,程式執行在本機是正常的,但是放到伺服器上就出現各種bug,且伺服器通用都是linux伺服器,不方便除錯,很難排查問題,這時候就需要

用到Eclipse的遠端除錯功能。說來慚愧,博主也是最近才知道這個功能,因此整理出這個帖子,以供大家分享。

何謂遠端除錯,就是我們把打包後的程式碼部署到伺服器上之後,使用本地開發環境連線到伺服器部署環境,以這樣的方式除錯。
下面說一下方法吧:

環境:Eclipse、Linux伺服器下tomcat環境,做遠端除錯並不需要其他特殊外掛

1、配置Linux伺服器下Tomcat/bin/catalina.sh

在第一行增加程式碼:
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899"
其中8899即為我們遠端除錯的埠,後面會用到。另外,該命令不可手工換行(部落格顯示的時候可能會被換行,實際配置的時候請注意)。


引數說明:
-Xdebug                                    : 啟用除錯模式
-Xrunjdwp<sub-options>      :載入JVM的JPDA參考實現庫
transport=dt_socket               :Socket連線,可選dt_shmem 通過共享記憶體的方式連線到除錯伺服器
address=8000                        :除錯伺服器監聽的埠
server=y                                    : 是否是伺服器端,n為客戶端
suspend=n                              : 啟動過程是否載入暫停,y為啟動時暫停,方便除錯啟動過程

(

Window中修改 catalina.bat檔案,新增:
Set  "CATALINA_OPTS=-Xdebug  -Xrunjdwp:transport=dt_socket,address=8899,server=y,suspend=n"

)

2、啟動tomcat,檢視tomcat是否啟動成功

如果啟動成功,tomcat日誌檔案(catalina.out)中會有如下輸出:
Command line argument: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899


3、配置Eclipse

點選Eclipse上面的debug圖示,選擇Debug Configurations,開啟視窗找到Remote Java Application,如下圖:


建立一個遠端除錯,按下圖配置,然後點選“Debug”


4、驗證

我們開啟原始碼專案中的任意需要除錯的程式碼,像普通本地debug一樣設定斷點,然後對伺服器部署的專案發起請求。
如下圖所示,則表示已經成功。


點選上面圈起來的圖示(Disconnect)即可斷開Debug模式。
斷開Debug模式後,可以隨時再開啟Debug模式,如以下操作:


5、注意事項

遠端debug要保證原生代碼和伺服器程式碼一直,否則除錯結果不一致
埠號必須是可以訪問的埠