轉自 http://blog.csdn.net/hongchangfirst/article/details/44191925
一、遠程debug原理
Java遠程調試的原理是兩個JVM之間通過debug協議進行通信,然后以達到遠程調試的目的。兩者之間可以通過socket進行通信。
被debug的機器需要開啟debug模式,debug使用的客戶端可以是eclipse,總之我使用eclipse已經成功了。
二、操作步驟
1.服務端設置
由於我們經常將程序部署到linux機器上,所以通常使用的是war、tar包或者直接使用可運行的jar包,由於近來spring-boot的盛行,直接使用可執行的jar包成為了最流行的部署方式:
jdk1.7之后使用命令:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -jar you-runnable-jar.jar
- jdwp:是 Java Debug Wire Protocol的縮寫
- server=y表示是監聽其他debugclient端的請求
- address=8000表示服務會在端口號8000監聽debug請求,客戶端必須設置這個端口號才能進行dubug
- suspend表示是否在調試客戶端建立連接之后啟動 VM。如果為y,那么當前的VM就是suspend直到有debug client連接進來才開始執行程序。如果你的程序不是服務器監聽模式並且很快就執行完畢的,那么可以選擇在y來阻塞它的啟動。
當出現以下提示的時候表示服務端已經使用deubg模式啟動:
2.客戶端設置
eclipse畢竟還是我們最熟悉的IDE,所以使用它作為dubug的客戶端。
3.測試
使用客戶端發起一個請求,可以直接eclipse會直接進入debug模式。