Java服務(wù)實(shí)現(xiàn)開啟Debug遠(yuǎn)程調(diào)試
一、背景
日常項(xiàng)目中,通常我們的代碼都是部署到遠(yuǎn)程的服務(wù)器,有時(shí)線上出現(xiàn)了問題,
經(jīng)常需要我們增加一些日志來排查問題,但是如果是測試環(huán)境的場景下或者我們能進(jìn)行遠(yuǎn)程調(diào)試的話,
我們就可以使用遠(yuǎn)程的Debug方式進(jìn)行遠(yuǎn)程調(diào)試,不用頻繁的修改代碼部署到遠(yuǎn)程服務(wù)器上。
這時(shí)就需要我們的服務(wù)需要開啟遠(yuǎn)程Debug了。
二、相關(guān)圖示說明

三、具體操作步驟
1、服務(wù)端配置
通常debug模式是關(guān)閉的,如果沒有特地打開的話,通常是通過設(shè)置JVM啟動(dòng)參數(shù)來實(shí)現(xiàn)。
你可以使用以下參數(shù)來啟動(dòng)Java程序,并開啟調(diào)試功能:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888(debug監(jiān)聽端口號(hào))
進(jìn)行java -jar后面進(jìn)行啟動(dòng),代表我們的服務(wù)端開啟的debug模式,并監(jiān)聽了8888的端口。
備注:
- suspend 參數(shù)如果設(shè)置為 y,則表示在調(diào)試客戶端連接之前,JVM 會(huì)暫停執(zhí)行;
- 如果設(shè)置為 n,則表示即使沒有調(diào)試客戶端連接,JVM也會(huì)繼續(xù)執(zhí)行。
2、客戶端配置
如果你想在本地機(jī)器上的8000端口監(jiān)聽調(diào)試請求,可以這樣啟動(dòng)Java程序:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888(遠(yuǎn)程的Debug服務(wù)端口)
在IDEA的應(yīng)用下可以用這個(gè)方式進(jìn)行設(shè)置:

添加一個(gè)遠(yuǎn)程debug, 然后配置好對應(yīng)的服務(wù)端的端口:

然后選擇對應(yīng)服務(wù)器的代碼,使用debug的模式進(jìn)行啟動(dòng),這樣本地就能連上遠(yuǎn)程的服務(wù)開始debug了。
后面的操作就跟本地debug一樣,選擇需要斷點(diǎn)的代碼,進(jìn)行斷點(diǎn)操作即可。
總結(jié)
至此Java服務(wù)開啟Debug的遠(yuǎn)程調(diào)試就介紹完了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Java 項(xiàng)目封裝sqlite連接池操作持久化數(shù)據(jù)的方法
這篇文章主要介紹了Java 項(xiàng)目封裝sqlite連接池操作持久化數(shù)據(jù)的方法,文中給大家介紹了sqlite的體系結(jié)構(gòu)及封裝java的sqlite連接池的詳細(xì)過程,需要的朋友可以參考下2021-11-11
Java使用JaCoCo進(jìn)行代碼覆蓋率分析的操作指南
JaCoCo是一個(gè)開源的 Java 代碼覆蓋率工具,廣泛應(yīng)用于測試過程中,它可以幫助開發(fā)者分析測試代碼的覆蓋情況,在本文中,我們將介紹 JaCoCo 的基本功能、如何集成到 Maven 項(xiàng)目中,以及通過具體案例展示如何生成覆蓋率報(bào)告,需要的朋友可以參考下2025-02-02
Java基本數(shù)據(jù)類型與類型轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了Java基本數(shù)據(jù)類型與類型轉(zhuǎn)換,結(jié)合實(shí)例形式分析了Java基本數(shù)據(jù)類型分類、用法,類型轉(zhuǎn)換及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-04-04

