idea遠程debug

概述

對於分佈式系統的調試不知道你們有什麼好的方法。對於我來講,在知道遠程調試這個方法以前就是在代碼中打各類log,而後從新部署,上線,調試,這樣比較費時。今天我們來了解了解Java遠程調試這個牛逼的功能,本文以Intellij IDEA爲例講解怎麼使用遠程調試。以Thrift入門教程這篇文章中使用的程序做爲例子。這個程序由Thrift服務端和客戶端組成。描述一下遠程調試須要解決的問題:服務器

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

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

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

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

 

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

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

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

而後點擊Apply,最後點擊OK便可調試

啓動debug模式

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

設置斷點,開始調試

遠程debug模式已經開啓,如今能夠在須要調試的代碼中打斷點了,好比:
blog

如圖中所示,若是斷點內有√,則表示選取的斷點正確。教程

如今在本地發送一個到遠程服務器的請求,看本地控制檯的bug界面,劃到debugger這個標籤,能夠看到當前遠程服務的內部狀態(各類變量)已經所有顯示出來了,而且在剛纔設置了斷點的地方,也顯示了該行的變量值。

相關文章
相關標籤/搜索