使用Eclipse遠端除錯Linux伺服器Tomcat專案
阿新 • • 發佈:2019-01-28
工作這些年,經常會出現這樣的情況,程式執行在本機是正常的,但是放到伺服器上就出現各種bug,且伺服器通用都是linux伺服器,不方便除錯,很難排查問題,這時候就需要
用到Eclipse的遠端除錯功能。說來慚愧,博主也是最近才知道這個功能,因此整理出這個帖子,以供大家分享。
何謂遠端除錯,就是我們把打包後的程式碼部署到伺服器上之後,使用本地開發環境連線到伺服器部署環境,以這樣的方式除錯。下面說一下方法吧:
環境:Eclipse、Linux伺服器下tomcat環境,做遠端除錯並不需要其他特殊外掛
1、配置Linux伺服器下Tomcat/bin/catalina.sh
在第一行增加程式碼:其中8899即為我們遠端除錯的埠,後面會用到。另外,該命令不可手工換行(部落格顯示的時候可能會被換行,實際配置的時候請注意)。CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=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要保證原生代碼和伺服器程式碼一直,否則除錯結果不一致埠號必須是可以訪問的埠