使用IDEA進行遠端除錯

尐鱼儿發表於2024-06-27

客戶端(idea 、eclipse 等)之所以可以進行除錯,是由於客戶端 和 服務端(程式端)進行了 socket 通訊,通訊過程如下:

1、先建立起了 socket 連線

2、將斷點位置建立了斷點事件透過 JDI 介面傳給了 服務端(程式端)的 VM,VM 呼叫 suspend 將 VM 掛起

3、VM 掛起之後將客戶端需要獲取的 VM 資訊返回給客戶端,返回之後 VM resume 恢復其執行狀態

4、客戶端獲取到 VM 返回的資訊之後可以透過不同的方式展示給客戶

使用步驟

步驟1:開啟Inteliij IDEA,頂部選單欄選擇Run-> Edit Configurations,進入除錯配置介面

步驟2:點選左上角'+'號,選擇Remote JVM Debug。分別填寫右側三個紅框中的引數:Name,Host(要除錯的機器ip),Port(想要指定的遠端除錯埠)

步驟3:複製Command line arguments for remote JVM的值,點選ok

步驟4:兩種方式(建議使用方法一)

方法一:進入伺服器端,ps -ef | grep tomcat808x檢視執行引數

啟動命令 = 複製的紅色部分 + idea複製的引數 + 複製的黃色部分

執行組合的啟動命令

方法二:進入伺服器端的catalina.sh檔案,在第一行新增引數

CATALINA_OPTS="idea複製的引數"

重啟tomcat即可生效(shutdown.sh /startup.sh)

區別:方法一是永久有效的,只需要配置一次,之後每次啟動都是debug啟動

方法二是暫時,配置引數才會以debug啟動(建議使用方法二)

步驟5:本地IDEA啟動debug模式,控制檯顯示Connected to the target VM, address: '10.144.1.191:5000', transport: 'socket' 即連線成功

注:

遠端debug的程式碼必須與遠端部署的程式碼完全一致,不能發生任何的修改,否則打上的斷點將無法命中,切記切記。
這種方式是socket的方式去連遠端tomcat的。你需要把埠對外開放。並且他是堵塞式的,同一時間只能支援一臺客戶端去除錯
建議除錯時儘快走過斷點方法,以免阻塞生產環境的使用
————————————————

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。

原文連結:https://blog.csdn.net/weixin_42537532/article/details/131857486

相關文章