Posted on 2006-06-13 19:33
Ardor Leo 閱讀(2658)
評論(6) 編輯 收藏 所屬分類:
有點(diǎn)心得
也談Eclipse中的遠(yuǎn)程調(diào)試
問題的由來:平時(shí)的開發(fā),我們基本都是在
Debug
模式下做的,這樣便于發(fā)現(xiàn)問題給于修正。一旦項(xiàng)目到了實(shí)施測階段,程序被部署到服務(wù)器上,現(xiàn)場調(diào)試就會成為一個(gè)問題。因?yàn)楸徊渴鸬姆?wù)器上的日志往往不能提供足夠的信息;或是有了足夠的信息,可即時(shí)想得到一個(gè)狀態(tài)點(diǎn)的信息又不是太容易(比如說幾個(gè)關(guān)鍵變量的即時(shí)值)。于是想到,如果可以象本機(jī)調(diào)試程序一樣就好了。
于是(呵呵,又是于是),
google
了一下,真得還是找到了一篇文章(先謝謝了),做法是
只要在
TOMCAT
的啟動文件中加入一些參數(shù)就可以在
ECLIPSE
中啟動
REMOTE_DEBUG
了,具體方法如下:
在
%TOMCAT_HOME%\bin\catalina.bat
文件中加入
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9046
。
打開
ECLIPSE
,在
ECLIPSE
的
RUN
菜單中選擇
DEBUG...
項(xiàng),然后在左邊的樹形菜單中新增一個(gè)
REMOTE_DEBUG(
遠(yuǎn)程調(diào)試
)
,填
寫最基本的幾項(xiàng)信息就行了,這幾項(xiàng)信息是:調(diào)試名稱,工程名稱,調(diào)試主機(jī)的
URL
以及
PORT
,在
allow terminate of remote VM
前打上勾
.
最主要的就是端口信息,這個(gè)端口信息來自于上面那一串參數(shù)中的
address
項(xiàng),可以將
address
設(shè)置為任何未被占用的端口。
以控制臺方式啟動
TOMCAT
,可以在控制臺看到
"Listening for transport dt_socket at address: 5888"
這樣的信息,說明調(diào)試端口已經(jīng)被監(jiān)聽。然后打開之前設(shè)置的調(diào)試并在
IE
或者
ECLIPSE
內(nèi)置的瀏覽器中輸入
URL
運(yùn)行
WEB
程序,記得在運(yùn)行
WEB
程序之前要設(shè)置斷點(diǎn)。
現(xiàn)在就可以在
ECLIPSE
中進(jìn)行
WEB
調(diào)試了
...
要說明的是:
我并沒按上文那樣設(shè)置變量。我看了
catalina.bat
這個(gè)批處理文件,寫的很嚴(yán)謹(jǐn),環(huán)境變量設(shè)置有它自己的規(guī)范,我不想更改。在這個(gè)文件我看到了這么一個(gè)名字
setenv.bat
。對了,看到它你就知道,你可以建立這么一個(gè)文件把
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9046
放進(jìn)去,OK啦。但這是只是
windows
中的作法。
岔開說一句話。其實(shí),上面的參數(shù)設(shè)置并不是都需要的,主要的就兩項(xiàng):
transport
和
address
,對應(yīng)于
catalina.bat
文件中
JPDA_TRANSPORT
和
JPDA_ADDRESS
現(xiàn)兩個(gè)變量,你可以直接查詢并修改這兩個(gè)參數(shù)的值,注意
JPDA_TRANSPORT
的值一定是
dt_socket
才行。不過啟動方式有些變化,命令行需要這樣:
catalina.bat
jpda start
在
Linux
中,可以直接
./
catalina.sh
jpda start
命令直接啟動調(diào)試模式,不過默認(rèn)的端口是
8000
,
你也可以在
catalina.sh
查找
JPDA_ADDRESS="8000"
把端口修改想要的值。至于寫配置文件
setenv.sh
直接用
./starup.sh
啟動的形式,我沒成功,呵呵
下面這個(gè)就是
Eclipse
中的
Debug
設(shè)置窗口了,別告訴我你不會調(diào)出來,呵呵
?
這里,我在本機(jī)也用
remote
調(diào)試程序。當(dāng)然,自然是有好處的了。
eclipse
中調(diào)程序的都知道,在
eclipse
中再啟動其他服務(wù)(不一定是
Tomcat
啦),會使eclipse編輯的響應(yīng)速度急劇下降,甚至假死,很是不爽!現(xiàn)在好了,這么一設(shè),既有了速度,又可以設(shè)調(diào)試斷點(diǎn),哈哈,舒服啊。