Springboot程序開啟遠(yuǎn)程DEBUG方式
一、遠(yuǎn)程debug的原理
Spring Boot程序遠(yuǎn)程debug的原理主要是通過在啟動時指定JVM參數(shù)來啟用遠(yuǎn)程調(diào)試模式,并在調(diào)試器中連接到程序所在的調(diào)試地址,從而實(shí)現(xiàn)對程序的遠(yuǎn)程調(diào)試。
具體步驟如下:
- 在運(yùn)行Spring Boot程序時,在啟動命令的JVM參數(shù)中指定遠(yuǎn)程調(diào)試的相關(guān)配置,比如指定調(diào)試端口和允許遠(yuǎn)程連接等參數(shù),例如:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7005
- 啟動Spring Boot程序后,程序會監(jiān)聽指定的調(diào)試端口,并等待調(diào)試器連接。
- 在調(diào)試器中創(chuàng)建一個遠(yuǎn)程調(diào)試配置,配置連接到程序所在的服務(wù)器和指定的調(diào)試端口。
- 連接成功后,調(diào)試器就可以通過遠(yuǎn)程連接對程序進(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ā)對應(yīng)的JDK版本號;遠(yuǎn)程JVM的命令行參數(shù)在配置完成以后拷貝下來;模塊類路徑即選擇主程序包路徑。

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

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

