IntelliJ IDEA遠程調試(Debug)Tomcat


為什么需要這么做?

  • 解決 在我本地是好的啊 這個世界性難題~
  • 測試環境碰到問題,直接連上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並開啟遠程調試的端口

其實官方教程是在文件的開頭加上 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
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM