在調試代碼的過程中,為了更好的定位及解決問題,有時候需要我們使用遠程調試的方法。在本文中,就讓我們一起來看看,如何利用IntelliJ IDEA 進行遠程Tomcat 的調試。
首先,配置remote:
如上圖所示,點擊Edit Configurations,進入如下界面:
如上圖所示,我們進入了Run/Debug Configurations界面,然後點擊左上角的+,選擇Remote:
如上圖所示,其中標註2 和標註3 又分別有兩種分類,對於標註2,
標註2:傳輸方式,默認為Socket;
對於標註3,
標註3:調試模式,默認為Attach;
然後,複製標註1,即IntelliJ IDEA 自動生產的命令行參數,然後導入到Tomcat 的配置文件中。以Linux 系統為例,導入語句為:
複製代碼代碼如下:
export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
如果是Windows 系統,則導入語句為:
複製代碼代碼如下:
set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
兩者的區別在於導入語句的關鍵字不同以及有無引號,Linux 系統的導入關鍵字為export,Windows 為set;Linux 的導入值需要用單引號''括起來,而Windows 則不用。
接下來,修改Tomcat 的bin 目錄下的catalina.sh文件(如果是Windows 系統則修改catalina.bat文件),將上述的導入語句添加到此文件中即可:
至此,IntelliJ IDEA 遠程調試Tomcat 的配置已經完成了,調試的後續步驟按正常的調試技巧進行就可以啦!
+++++ 題外話:我是一個大彩蛋+++++
在這裡,我們假設服務器的IP 地址為10.11.12.39,端口號為16203,設置完成後,進入Debug模式,如果連接成功,則會出現如下提示:
此外,如果我們是跨多個系統進行調試,則只需要在想要調試的系統中配置Remote,打上斷點,啟動Debug模式,然後在服務開始的地方執行程序即可進入到我們設置的斷點。而且,如果我們在本地配置Remote並關聯到某個Tomcat,在Debug模式下,所有涉及到斷點所在代碼的功能,都會進入我們設置的斷點。
例如,對於服務器上的Tomcat A,多個系統都用到了這個Tomcat,如訂單子系統、賬戶子系統、路由子系統等,並且多個系統間互相調用,如訂單子系統調了賬戶子系統,賬戶子系統又調了路由子系統,則當我們在這三個子系統中配置Remote並在對應的代碼(如在訂單子系統中查詢商戶的賬戶信息,則調到賬戶子系統;在賬戶子系統中又通過路由子系統調到其他底層服務查詢商戶的賬戶餘額等)上打上斷點,啟動Debug模式之後,通過單元測試或者頁面操作觸發訂單子系統中的查詢商戶的賬戶信息功能,則會依次進入到在上述三個子系統中設置的斷點。
此外,在我們配置完遠程調試之後,就算別人啟動相關服務,也會進入到我們的斷點,而且會受到我們設置的斷點的影響,只有在我們執行完測試之後,服務才會繼續執行下去。最後,遠程調試的功能真的很強大,善用遠程調試,遠離Bug!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。