程式就是這麼一個神奇的東西,有時你的一個項目,在本機上運作得還是好好的,可當你把這貨放到了伺服器上,同樣的條件就是結果不一樣。于是就灰常想看一下程式在遠端運作時候的狀态,希望讓程式在遠端運作,還可以在本機打斷點跟一下,這就用到了用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()的東西列印到本地,如果有這樣一種方法,誰知道請不吝賜教哦!~
分類:
Java