Java遠端偵錯的原理是兩個VM之間通過debug協議進行通訊,然後以達到遠端偵錯的目的。兩者之間可以通過socket進行通訊。
首先被debug程式的虛擬機器在啟動時要開啟debug模式,啟動debug監聽程式。jdwp是Java Debug Wire Protocol的縮寫。
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n zhc_application
這是jdk1.7版本之前的方法,1.7之後可以這樣用:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n zhc_application
zhc_application是main程式,server=y表示是監聽其他debugclient端的請求。address=8000表示連接埠是8000
suspend表示是否在調試用戶端建立串連之後啟動 VM。如果為y,那麼當前的VM就是suspend直到有debug client串連進來才開始執行程式。如果你的程式不是伺服器監聽模式並且很快就執行完畢的,那麼可以選擇在y來阻塞它的啟動。
然後用一個debug用戶端去debug遠端程式了,比如用Eclipse內建的debug用戶端,填寫運行被debug程式的虛擬機器監聽的連接埠號碼和地址,選擇connect方式為attach。
Okay,現在就可以開始遠端偵錯了。
Eclipse debug快速鍵:
F5 Step into
F6 Step over
F7 Step out
F8 continue to the next breakpoint
Intellij debug的快速鍵
F7,Step into
F8,Step over
Shift+F8, Step out
Alt+F9,運行至游標處
F9,恢複程式
原文:http://blog.csdn.net/hongchangfirst/article/details/44191925
作者:hongchangfirst
hongchangfirst的首頁:http://blog.csdn.net/hongchangfirst