程序就是這麼一個神奇的東西,有時你的一個項目,在本機上運行得還是好好的,可當你把這貨放到了服務器上,同樣的條件就是結果不一樣。於是就灰常想看一下程序在遠程運行時候的狀態,希望讓程序在遠程運行,還可以在本機打斷點跟一下,這就用到了用eclipse遠程調試Tomcat。記得以前好久之前研究了一下,怎麼也沒弄成功。最近終於OK啦。
一、調試準備
首先得有一個在遠程服務器上的Tomcat與一個在本地的Eclipse,還有就是一個已經部署在遠程Tomcat上並且源代碼在本地Eclipse上的程序。當然如果木有遠程的服務器就用自己的本機當遠程的服務器試下也行哈。
二、配置tomcat
1、如果遠程服務器是Windows NT的環境,那就在%CATALINE_HOME%/bin 下建立debug.bat文件,在裏面貼入如下內容:
set JPDA_ADDRESS=8888
set JPDA_TRANSPORT=dt_socket
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888
startup
其中的兩處8787是要啓用的遠程端口,當然任何未被使用的端口都可以。連接方式有兩種,爲dt_shmem和dt_socket,分別表示本機調試和遠程調試。
2、如果遠程服務器是Linux/Unix環境,就編輯%CATALINE_HOME%/bin/startup.sh文件,找到其中最後一行,將
exec "$PRGDIR"/"$EXECUTABLE" start "$@"
改爲
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
默認的遠程調試端口是8000,如果被佔用,編輯%CATALINE_HOME%/bin/catalina.sh文件,將
JPDA_ADDRESS="8000"
改爲
JPDA_ADDRESS="8888"
3 、在Windows下運行debug.bat 在Linux下運行 startup.sh啓動Tomcat。
如果在啓動日誌中出現
Listening for transport dt_socket at address: 8888
則說明遠程調試端口監聽成功。
三、配置Eclipse
在要調試的項目上右鍵,選擇 調試方式->調試配置
打開配置界面,選擇 遠程Java應用程序 新建一個遠程調試
IP地址就是遠程服務器IP地址,端口是剛纔配置的Tomcat的遠程調試監聽端口。配置好後點應用,調試。
這時打開調試界面就可以看到線程狀態,也可以隨時斷開調試。
四、調試程序
接下來就可以正常的打斷點來調試遠程服務器上的Java程序了,可以隨時查看變量狀態等,還是十分Happy的。不過目前沒能把System.out.println()的東西打印到本地,如果有這樣一種方法,誰知道請不吝賜教哦!~