經過Java的JPDA遠程調試功能將本地源碼與遠程部署的應用鏈接起來實現調試,其中程序源碼與服務器上發佈的編譯代碼版本要保持一致,保證調試定位準確。調試的過程當中,部署在應用服務器上的應用處於DEBUGE模式。java
JPDA爲Java平臺上的調試器定義了一個標準的體系結構。默認狀況下,JVM並無啓用JPDA。須要在啓動JVM的命令行加載如下參數:-Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=y。linux
-Xdebug 啓用調試特性 -Xrunjdwp 啓用JDWP實現,它包含若干子選項: transport=dt_socket JPDA front-end和back-end之間的傳輸方法。dt_socket表示使用套接字傳輸。 address=8000 JVM在8000端口上監聽請求。 server=y y表示啓動的JVM是被調試者。若是爲n,則表示啓動的JVM是調試器。 suspend=y y表示啓動的JVM會暫停等待,直到調試器鏈接上。suspend=y這個選項很重要。若是 你想從Tomcat啓動的一開始就進行調試,那麼就必須設置suspend=y。
打開apache-tomcat\bin目錄將在啓動文件中設置CATALINA_OPTS參數apache
1) Windows系統在startup.bat開始處中增長以下內容:tomcat
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
2) Linxu系統在startup.sh開始處中增長以下內容:服務器
declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
ps:linux打開端口命令的使用方法。 nc -lp 8000 &(打開8000端口)。查看是否打開8000端口netstat -an | grep 8000eclipse
1·複製startup.bat 爲startup_JPDA.bat並作以下配置:socket
set JPDA_TRANSPORT=dt_socket --鏈接方式工具
set JPDA_ADDRESS=8000 --監聽端口spa
set JPDA_SUSPEND=y --是否掛起.net
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
注意將call "%EXECUTABLE%" start %CMD_LINE_ARGS% 換成了call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%。以下圖所示:
若是配置掛起參數suspend=y(配置方式一)或JPDA_SUSPEND=y(配置方式二),JVM會使用socket方式,打開8000端口並掛起,等待客戶端(Eclipse 遠程Debug模式)接入,主要用於應用程序啓動過程當中的調試。如圖:
1)打開Eclipse,導入項目源碼(與被調試的代碼一致)
2)打開Eclipse工具欄上Run -->Debug Configuration
3)選中左側Remote Java Applilcation右鍵New—打開debug配置頁面
4)設置參數
Project: 選擇被調試的項目
Connection Type: 使用SocketAttach
Host:tomcat服務器所在IP地址
Port:8000(前面配置的監聽端口)
5)設置完成後,記得點擊Apply按鈕,而後點擊下方的Debug按鈕,eclipse即可以已Debug模式調試遠程tomcat上發佈的代碼了。
1·http://blog.csdn.net/jarfield/article/details/5250915
其中有關於如何遠程調試JVM,JPDA簡介