為什么需要這么做?
- 解決
在我本地是好的啊
這個世界性難題~ - 測試環境碰到問題,直接連上debug,不用再測試本地,再查看測試環境日志
- 遇到一些詭異的問題,日志是看不出端倪的
- 調試一些只能在測試環境執行的流程,如:調用微信/支付寶付款
服務器Tomcat配置
- 以 Linux 環境為例
- Tomcat 安裝在: /usr/program/tomcat7
- Tomcat 的執行程序:/usr/program/tomcat7/bin/catalina.sh
- 編輯 Tomcat 執行程序:
vim /usr/program/tomcat7/bin/catalina.sh
- 查找Tomcat的debug端口:
/JPDA_ADDRESS=
- 默認的debug端口是8000,我這里是配成了5005
- 在bin目錄下執行命令
sh catalina.sh jpda start
,可以啟動tomcat並開啟遠程調試的端口
- 查找Tomcat的debug端口:
其實官方教程是在文件的開頭加上
export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
,但是我不想讓其他同事也是以debug模式啟動。
服務器Jetty配置
- 以 Linux 環境為例
- Tomcat 安裝在 /usr/program/tomcat7
- jetty 不像Tomcat那樣需要安裝,只要有jetty的jar包就可以啟動我們想要啟動的應用
- 在啟動應用的時候加入
agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
- 就像這樣:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar {your jetty path} {your port} --path {your war} 1>/dev/null 2>&1 &
在IntelliJ Idea中遠程連接tomcat
點擊下圖紅框中的”run”按鈕,在下拉菜單中點擊“Edit Configurations…“:
在彈出的菜單中點擊“+“,再點擊“Remote“:
如下圖,修改Port框中的數字為之前設置的Tomcatdebug端口號(默認8000),如果tomcat部署在其他機器上,請在Host輸入框中填入tomcat所在機器的ip:
設置完畢后點擊下面的“ok“,回到主窗口后,點擊下圖紅框中的下拉菜單,選中我們剛才新建的debug配置項,再點擊小蟲按鈕,就能連接到tomcat的debug端口了:
如果看到下圖則代表成功了
拓展
- 標注 1:運行遠程 JVM 的命令行參數;
- 標注 2:傳輸方式,默認為Socket;
- 標注 3:調試模式,默認為Attach;
- 標注 4:服務器 IP 地址,默認為localhost,需要修改為目標服務器的真實 IP 地址;
- 標注 5:服務器端口號,默認為5005,需要修改為目標服務器的真實端口號;
- 標注 6:搜索資源是使用的環境變量,默認為
,即整個項目。
如上圖所示,其中 標注 2 和 標注 3 又分別有兩種分類,
標注 2:傳輸方式,默認為Socket;
Socket:macOS 及 Linux 系統使用此種傳輸方式;
Shared memory: Windows 系統使用此種傳輸方式。
標注 3:調試模式,默認為Attach;
Attach:此種模式下,調試服務端(被調試遠程運行的機器)啟動一個端口等待我們(調試客戶端)去連接;
Listen: 此種模式下,是我們(調試客戶端)去監聽一個端口,當調試服務端准備好了,就會進行連接。
參考鏈接
本文為博主對幾篇 博文|教程 的總結,部分文字為直接復制。以下為原文鏈接:
本文作者:夏日淺笑、
原文地址:https://www.cnblogs.com/summertime-wu/p/9484420.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。