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