遠程調試
主動連接調試:服務端配置監控端口,本地IDE連接遠程監聽端口進行調試,一般調試問題用這種方式。
被動連接調試:本地IDE監聽某端口,等待遠程連接本地端口。一般用於遠程服務啟動不了,啟動時連接到本地調試分析。
主動連接調試demo
我這里已經有個數據路由的項目,我以這個項目為例;
主動連接需要先啟動服務端,后啟動客戶端
1.把項目打成jar包
選中項目右鍵----->Export--->Runnable JAR file,點擊Next
2.選擇程序入口和項目路徑,點擊finish完成
3.把導出的jar包放到指定盤符,我這里拷貝到了D盤,打開cmd窗口
輸入命令:
jdk1.7版本之前的命令
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
1.7版本之后的命令
1) java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
2) java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
4.在eclipse中配置遠程調試,右鍵項目----->Debug As----->Debug Configurations
第一次進來時,需要New一個Dcat
進入調試模式
被動連接調試demo
我這里還是以Dcat項目為例;
被動調試時eclipse作為服務端,運行的jar包作為客戶端,所以先啟動eclipse,再運行jar包;
1.在eclipse中配置遠程調試,右鍵項目----->Debug As----->Debug Configurations
2.打開cmd窗口,輸入命令

3.進入調試模式
命令參數詳解
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
-Xdebug:通知JVM工作在debug模式下;
-Xrunjdwp:通知JVM使用(java debug wire protocol)來運行調試環境;
transport:監聽Socket端口連接方式(也可以dt_shmem共享內存方式,但限於windows機器,並且服務提供端和調試端只能位於同一台機);
server:server=y表示當前是調試服務端,=n表示當前是調試客戶端;
suspend:suspend=n表示啟動時不中斷,一般用於設置主動連接;suspend=y表示啟動時就進入調試模式,一般用於被動連接;
說明:不管是主動連接還是被動連接,我這里都嘗試了設置suspend=y或suspend=n,最后的結果好像都一樣,具體原因我也不清楚。
遠程調試OSGI
說明:我這里只能演示OSGI的被動連接,主動連接由於不能連接設備展示演示不了
1.在F:\OSGICloundEnv0.1\conf文件夾下的wrapper.conf文件中添加如下配置
wrapper.java.additional.8=-Xdebug
wrapper.java.additional.9=-Xnoagent
wrapper.java.additional.10=-Djava.compiler=NONE
wrapper.java.additional.11=-Xrunjdwp:transport=dt_socket,address=172.18.11.226:8888,suspend=n
2.在eclipse中配置遠程調試,右鍵項目----->Debug As----->Debug Configurations
3.啟動osgi
clean.bat
runosgi.bat
4.進入到調試界面