溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用IDEA進(jìn)行JAVA代碼的遠(yuǎn)程Debug

發(fā)布時間:2020-06-08 18:11:10 來源:網(wǎng)絡(luò) 閱讀:2728 作者:lilugoodjob 欄目:軟件技術(shù)

在本地開發(fā)過程中,對代碼進(jìn)行Debug能逐行對代碼邏輯進(jìn)行調(diào)試,方便準(zhǔn)備的排查問題。但是當(dāng)代碼發(fā)布到線上時,如果運(yùn)行過程中出現(xiàn)異常,僅僅依靠日志來排查問題的話,會比較耗時,而且經(jīng)常由于日志不全等原因而不能快速準(zhǔn)確定位問題,而通過對JAVA代碼進(jìn)行遠(yuǎn)程Debug能很好的解決這個問題。
這篇博文主要介紹在IDEA中配置JAVA代碼遠(yuǎn)程Debug,以及需要注意的事項(xiàng)。

我們知道,Java 程序是統(tǒng)一以字節(jié)碼的形式運(yùn)行在Java 虛擬機(jī)上的,因?yàn)槎际亲止?jié)碼文件,所以只要本地代碼和遠(yuǎn)程服務(wù)器上的類文件相同,兩個JVM就可以通過調(diào)試協(xié)議進(jìn)行通信。這里需要注意的是,被調(diào)試的服務(wù)器需要開啟調(diào)試模式,服務(wù)器端的代碼和本地代碼必須保持一致,否則斷點(diǎn)無法進(jìn)入。

在IDEA中進(jìn)行JAVA代碼的遠(yuǎn)程Debug,需要做兩步準(zhǔn)備工作。

一、遠(yuǎn)程服務(wù)器端的JAVA代碼開啟調(diào)試模式。

項(xiàng)目類型:Spring Boot項(xiàng)目
JDK版本:1.8.0_131
項(xiàng)目啟動命令:java -jar -Dspring.profiles.active=development -Xms1024m -Xmx1024m -Xmn600m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001 -XX:-OmitStackTraceInFastThrow -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:log/gc.log smart-building.jar
其中開啟遠(yuǎn)程debug的配置是:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
參數(shù)說明:
jdwp:java debug wire protocol
transport=dt_socket:以socket協(xié)議進(jìn)行通信
server=y:開啟調(diào)試服務(wù)端
address=4001:通信端口是4001

二、IDEA中的參數(shù)配置
1. 打開遠(yuǎn)程Debug參數(shù)配置窗口

使用IDEA進(jìn)行JAVA代碼的遠(yuǎn)程Debug

2. 配置Debug參數(shù),

Host表示遠(yuǎn)程服務(wù)端的IP地址。
Port表示跟遠(yuǎn)程服務(wù)端進(jìn)行Debug通信的端口。
Command Line表示啟動參數(shù),注明開啟遠(yuǎn)程Debug。
Use module classpath 表示遠(yuǎn)程服務(wù)對應(yīng)的本地代碼路徑。
使用IDEA進(jìn)行JAVA代碼的遠(yuǎn)程Debug

3. 點(diǎn)擊Debug圖標(biāo),開始Debug

使用IDEA進(jìn)行JAVA代碼的遠(yuǎn)程Debug

當(dāng)在IDEA控制臺輸出這行日志,說明本地IDEA已連接上了遠(yuǎn)程服務(wù)的Debug端口,接下來可以跟調(diào)試本地代碼一樣,開始遠(yuǎn)程代碼Debug。
使用IDEA進(jìn)行JAVA代碼的遠(yuǎn)程Debug

三、注意事項(xiàng)
  1. 當(dāng)開啟遠(yuǎn)程Debug后,任何能走到斷點(diǎn)的操作都會導(dǎo)致業(yè)務(wù)阻塞到斷點(diǎn)位置,從而影響業(yè)務(wù)流程的正常執(zhí)行,所以最好選擇沒什么用戶操作的時候進(jìn)行遠(yuǎn)程Debug調(diào)試。
  2. 遠(yuǎn)程Debug調(diào)試過程中,結(jié)束調(diào)試不會導(dǎo)致遠(yuǎn)程業(yè)務(wù)流程終止,線上業(yè)務(wù)會繼續(xù)執(zhí)行。
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI