Springboot程序開啟遠(yuǎn)程DEBUG方式
一、遠(yuǎn)程debug的原理
Spring Boot程序遠(yuǎn)程debug的原理主要是通過在啟動(dòng)時(shí)指定JVM參數(shù)來啟用遠(yuǎn)程調(diào)試模式,并在調(diào)試器中連接到程序所在的調(diào)試地址,從而實(shí)現(xiàn)對(duì)程序的遠(yuǎn)程調(diào)試。
具體步驟如下:
- 在運(yùn)行Spring Boot程序時(shí),在啟動(dòng)命令的JVM參數(shù)中指定遠(yuǎn)程調(diào)試的相關(guān)配置,比如指定調(diào)試端口和允許遠(yuǎn)程連接等參數(shù),例如:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7005
- 啟動(dòng)Spring Boot程序后,程序會(huì)監(jiān)聽指定的調(diào)試端口,并等待調(diào)試器連接。
- 在調(diào)試器中創(chuàng)建一個(gè)遠(yuǎn)程調(diào)試配置,配置連接到程序所在的服務(wù)器和指定的調(diào)試端口。
- 連接成功后,調(diào)試器就可以通過遠(yuǎn)程連接對(duì)程序進(jìn)行調(diào)試,包括設(shè)置斷點(diǎn)、查看變量值等操作。
Tips: 需要注意的是,為了避免遠(yuǎn)程調(diào)試帶來的安全風(fēng)險(xiǎn),建議在生產(chǎn)環(huán)境中禁用遠(yuǎn)程調(diào)試功能。
二、Springboot程序開啟遠(yuǎn)程Debug
1、在應(yīng)用配置(Application Config)中選擇編輯配置(Edit Configuration)

2、然后選擇添加新配置(Add New Configuration)

3、在展開的列表中選擇遠(yuǎn)程 JVM 調(diào)試(Remote JVM Debug),點(diǎn)擊確定

4、根據(jù)圖中示例配置。
名稱可以隨意起;主機(jī)地址即遠(yuǎn)程的公網(wǎng)IP地址;端口是指的遠(yuǎn)程Debug監(jiān)聽端口,而非該項(xiàng)目的服務(wù)端口;JDK選擇項(xiàng)目開發(fā)對(duì)應(yīng)的JDK版本號(hào);遠(yuǎn)程JVM的命令行參數(shù)在配置完成以后拷貝下來;模塊類路徑即選擇主程序包路徑。

5、利用Maven將項(xiàng)目打包 mvn clean package,放到遠(yuǎn)程主機(jī)上,攜帶剛剛拷貝的啟動(dòng)參數(shù)啟動(dòng)項(xiàng)目,例如:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7005 -jar ******.jar
6、啟動(dòng)本地調(diào)試,監(jiān)聽遠(yuǎn)程端口

當(dāng)控制臺(tái)打印“已連接到目標(biāo)”,說明本地項(xiàng)目已經(jīng)開始監(jiān)聽遠(yuǎn)程端口,此時(shí)可以開始遠(yuǎn)程Debug了

7、在本地代碼打上斷點(diǎn),使用postman訪問遠(yuǎn)程接口


8、觀察到Debug信息進(jìn)入到本地,說明配置成功了。

三、注意事項(xiàng)
- 在生產(chǎn)環(huán)境中不建議開啟遠(yuǎn)程debug: 開啟遠(yuǎn)程debug會(huì)增加程序的額外開銷,包括網(wǎng)絡(luò)開銷和調(diào)試信息的生成,還會(huì)造成接口阻塞。
- 調(diào)試信息的保護(hù): 調(diào)試信息中可能包含敏感信息,如密碼、私鑰等,需要仔細(xì)過濾或禁止傳遞這些信息。特別是在使用公共網(wǎng)絡(luò)時(shí),要注意調(diào)試信息的保護(hù)和加密。
- 調(diào)試客戶端和服務(wù)端的一致性: 調(diào)試客戶端和服務(wù)端必須保持一致,包括調(diào)試器的版本、JDK的版本和框架的版本等。否則可能會(huì)導(dǎo)致不可預(yù)期的問題。
- 調(diào)試范圍的限制: 開啟遠(yuǎn)程debug時(shí),要明確授權(quán)訪問權(quán),限制調(diào)試的范圍,避免潛在的安全風(fēng)險(xiǎn)。
- 資源占用問題: 調(diào)試信息的生成和傳輸可能會(huì)占用大量的資源,包括CPU和內(nèi)存等,如果不加注意可能會(huì)影響程序的正常運(yùn)行
綜上所述,使用遠(yuǎn)程debug需要慎重考慮,僅在必要時(shí)才應(yīng)該使用,并且要嚴(yán)格控制權(quán)限和范圍,避免潛在的安全風(fēng)險(xiǎn)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis取別名typeAliases標(biāo)簽的位置放錯(cuò)導(dǎo)致報(bào)錯(cuò)的解決
這篇文章主要介紹了mybatis取別名typeAliases標(biāo)簽的位置放錯(cuò)導(dǎo)致報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot整合JDBC的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot整合JDBC的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
springboot 基于Tomcat容器的自啟動(dòng)流程分析
這篇文章主要介紹了springboot 基于Tomcat容器的自啟動(dòng)流程分析,Spring通過注解導(dǎo)入Bean大體可分為四種方式,我們主要來說Import的兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2020-02-02
mybatis中${}和#{}的區(qū)別以及底層原理分析
這篇文章主要介紹了mybatis中${}和#{}的區(qū)別以及底層原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
java中對(duì)象和JSON格式的轉(zhuǎn)換方法代碼
JSON格式可以輕松地以面向?qū)ο蟮姆绞睫D(zhuǎn)換為Java對(duì)象,下面這篇文章主要給大家介紹了關(guān)于java中對(duì)象和JSON格式的轉(zhuǎn)換方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

