您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
1. 前言
今天線(xiàn)上出現(xiàn)了個(gè) Bug ,而且比較坑的是涉及到微信相關(guān)的東西不能線(xiàn)下調(diào)試。傳統(tǒng)方式是在代碼中各種的日志 log 埋點(diǎn)然后重新部署進(jìn)行調(diào)試,再根據(jù) log 中的信息進(jìn)行分析。如果你的 log 埋點(diǎn)不合理,就要不停的修改代碼、不停的打包部署。有沒(méi)有什么騷操作避免上面的問(wèn)題呢?
當(dāng)然有解決方案,這就是遠(yuǎn)程調(diào)試(Remote debugging)。遠(yuǎn)程調(diào)試使開(kāi)發(fā)人員能夠直接診斷服務(wù)器或其它線(xiàn)上進(jìn)程上的問(wèn)題,它提供了跟蹤線(xiàn)上運(yùn)行時(shí)錯(cuò)誤并確定性能瓶頸和問(wèn)題根源的方法,讓你能夠像在本地調(diào)試一樣 Debug 遠(yuǎn)程服務(wù)器。接下來(lái)我們將使用流行的 Java IDE,由 JetBrains 出品的 IntelliJ IDEA 來(lái)進(jìn)行遠(yuǎn)程調(diào)試。要讓遠(yuǎn)程服務(wù)器運(yùn)行的代碼支持遠(yuǎn)程調(diào)試,則啟動(dòng)的時(shí)候必須加上特定的 JVM 參數(shù),這些參數(shù)是:
其中 debug_port
是服務(wù)端開(kāi)放的調(diào)試端口,后續(xù)本地配置會(huì)用到。
IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試并不復(fù)雜經(jīng)過(guò)下面幾個(gè)步驟就可以很方便的配置。
按照上面圖的位置打開(kāi)配置面板新建一個(gè) Remote 調(diào)試面板如下:
按照上圖所示的順序結(jié)合你自己服務(wù)器和本地環(huán)境依次進(jìn)行配置,然后點(diǎn)擊確定就行了。其中步驟 2 和 4 端口就是我們遠(yuǎn)端指定的 debug_port
端口號(hào)。
這里有一個(gè)小小的知識(shí)點(diǎn)就是 參數(shù)中的 jdwp
。那么什么是 jdwp
?
JDWP 是 Java Debug Wire Protocol 的縮寫(xiě),它定義了調(diào)試器(debugger)和目標(biāo)虛擬機(jī)(target vm)之間的通信協(xié)議。Target vm 中運(yùn)行著我們要調(diào)試的 Java 程序,它與一般運(yùn)行的 JVM 沒(méi)有什么區(qū)別,只是在啟動(dòng)時(shí)加載了 JDWP Agent 從而具備了調(diào)試功能。而 debugger 就是我們本地的調(diào)試器,它向運(yùn)行中的 target vm 發(fā)送指令來(lái)獲取 target vm 運(yùn)行時(shí)的狀態(tài)和控制遠(yuǎn)程 Java 程序的執(zhí)行。Debugger 和 target vm 分別在各自的進(jìn)程中運(yùn)行,他們之間通過(guò) JDWP 通信協(xié)議進(jìn)行通信。
點(diǎn)擊箭頭所示的 綠色甲蟲(chóng)按鈕 (快捷鍵 Shift + F9) 就啟動(dòng)調(diào)試了,然后設(shè)置好本地代碼的斷點(diǎn),讓遠(yuǎn)程的邏輯觸發(fā)斷點(diǎn)邏輯就可以進(jìn)行打斷點(diǎn)調(diào)試了。
請(qǐng)務(wù)必保證本地 debug 的代碼與遠(yuǎn)程部署的代碼完全一致,不能發(fā)生任何的修改!否則斷點(diǎn)將無(wú)法命中!
除了需要保證代碼一致外,這里還有一些需要我們注意的地方。調(diào)試完畢遠(yuǎn)程的 JDWP Agent 應(yīng)該被禁用,也就是將遠(yuǎn)端的相關(guān)參數(shù)去掉。另外在調(diào)試中遠(yuǎn)端的日志并不會(huì)映射到本地,當(dāng)然你可以借助一些工具將遠(yuǎn)程的日志映射到本地以提供更強(qiáng)大的調(diào)試功能。
還要記住,雖然遠(yuǎn)程調(diào)試是一個(gè)非常強(qiáng)大的工具,但是它并非銀彈!生產(chǎn)環(huán)境不是調(diào)試的合適目標(biāo),請(qǐng)勿濫用!
以上就是如何使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。