本地除錯遠端服務

SunArmy發表於2024-11-04

1、場景

​ 通常來說我們的服務都是部署在各種遠端伺服器上的,本地開發完成部署到伺服器長期執行。當線上出現問題的時候,或者遠端出現問題的時候我們經常需要列印一些日誌來判斷問題所在。還有一種情況是本地開發環境正常,但是部署到遠端環境就會出現各種神奇的問題,這個時候去如果只在本地看程式碼或者純看日誌會比較麻煩。這個時候我們就可以使用遠端Debug方式進行遠端除錯,不用頻繁的修改/部署到遠端伺服器上這樣除錯

​ 要遠端除錯,需要遠端服務開啟遠端除錯,然後本地去連線遠端服務進行debug

2、遠端服務配置

​ 遠端除錯是需要手動開啟的,所以一般來說是關閉的。當我們需要使用的時候透過設定JVM啟動引數來實現。在啟動的時候新增下面這些引數

啟動新增以下引數:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005(debug監聽埠號)

引數解釋:
-agentlib:jdwp:指定使用Java除錯代理庫(Java Debug Wire Protocol)進行除錯
transport=dt_socket:指定除錯連線的傳輸方式為套接字(socket)
server=y:表示伺服器模式,即允許遠端除錯連線
suspend=n:設定為y,表示在除錯客戶端連線之前,JVM會暫停執行;設定為n,表示即使沒有除錯客戶端連線,JVM也會繼續執行
address=5005:指定除錯連線的埠號為5005

如下圖:

透過將這個配置字串新增到 Java 啟動命令中,可以在伺服器上啟用遠端除錯,並允許透過指定的埠進行連線。在本地開發環境中,可以使用相應的除錯工具(如 IDE)連線到伺服器上的除錯埠,進行遠端除錯。注意確保伺服器和本地開發環境之間的網路連線正常,並且防火牆設定允許遠端除錯連線。

3、本地配置

需要在本地機器上的5005埠監聽除錯請求,以idea舉例,可以這樣啟動Java程式

設定遠端服務的IP和我們在服務端配置的埠

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

4、本地除錯

開啟本地開發環境,連線遠端環境

直接使用swagger請求遠端的藉口

我們就可以在本地除錯遠端服務了

有興趣可以關注公眾號,新部落格第一時間先發布公眾號後才會同步部落格園

相關文章