遠程DeBug

 

服務端程序運行在一臺遠程服務器上,我們可以在本地服務端的代碼(前提是本地的代碼必須和遠程服務器運行的代碼一致)中設置斷點,每當有請求到遠程服務器時時能夠在本地知道遠程服務端的此時的內部狀態。

下面按照步驟介紹怎麼遠程debug。

使用特定JVM參數運行服務端代碼

要讓遠程服務器運行的代碼支持遠程調試,則啓動的時候必須加上特定的JVM參數,這些參數是:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}

其中的${debug_port}是用戶自定義的,爲debug端口,本例以5555端口爲例。

各參數解釋:
-Xdebug:通知JVM工作在調試模式下
-Xrunjdwp:通知JVM使用(java debug wire protocol)來運行調試環境。參數同時有一系列的調試選項:
<code>session</code>:指定了調試數據的傳送方式,dt_socket是指用SOCKET模式,另外dt_shmem指用共享內存方式,其中dt_shmem只適用於窗口平臺.server  參數是指是否支持在服務器模式的虛擬機中。
onthrow:指明當產生該類型的異常時,JVM就會中斷下來,進行調式該參數任選。
release:指明當JVM被中斷下來時,執行的可執行程序該參數可選
suspend:指明:是否在調試客戶端建立起來後,再執行 JVM。
onuncaught(= y或n)指明出現未捕獲的異常後,是否中斷JVM的執行。

本地連接遠程服務器debug端口

打開Intellij IDEA,在頂部靠右的地方選擇”Edit Configurations…”,進去之後點擊+號,選擇”Remote”,按照下圖的只是填寫紅框內的內容,其中host爲遠程代碼運行的機器的ip/hostname,port爲上一步指定的debug_port,本例是5555

然後點擊Apply,最後點擊OK即可

啓動debug模式

現在在上一步選擇”Edit Configurations…”的下拉框的位置選擇上一步創建的remote的名字,然後點擊右邊的debug按鈕(長的像臭蟲那個),看控制檯日誌,如果出現類似“Connected to the target VM, address: ‘xx.xx.xx.xx:5555’, transport: ‘socket’”的字樣,就表示連接成功過了。

設置斷點,開始調試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章