java實現線上環境遠程debug調試


docker中tomcat實現遠程調試配置

由於部署環境的差異性,相信很多朋友都碰到過開發環境正常測試過的功能在測試環境甚至生產環境下出現bug的情況。一般情況下,生產環境可以采取的手段比較單一,即通過日志的方式獲取運行中的環境上下文,分析日志文件並嘗試重現bug。這會帶來的問題還是不少的,首先,日志的分析是一項比較耗時的工作;其次,現有的日志記錄不一定能反映出問題,你可能需要多次重復這個過程(分析日志->猜測問題->加日志->部署->獲取日志)來慢慢逼近問題。倘若是測試環境,我們還多了一項可供選擇的手段——遠程調試——將程序在測試環境中以debug模式啟動,在本機使用IDEA在工程中設置斷點進行調試。
配置docker-compose.yml

CATALINA_OPTS參數配置啟動遠程調試功能

version: '2.2'

services:
  test:
    container_name: test
    image: tomcat:8.5.32

    ports:
      - "5005:5005"

    volumes:
      - "./target/test:/usr/local/tomcat/webapps/ROOT"

    environment:
        # tomcat啟動遠程調試
        CATALINA_OPTS: "-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,suspend=n,server=y"

    command: ["catalina.sh", "run"]
  • JPDA參數配置啟動遠程調試功能
version: "3"
services:
  tomcat:
    image: tomcat:8.5.27
    ports:
      - "8080:8080"
      - "5005:5005"
    volumes:
      - ./www:/www:rw
      - ./conf/server.xml:/usr/local/tomcat/conf/server.xml:ro
    environment:
      JPDA_ADDRESS: 5005
      JPDA_TRANSPORT: dt_socket
    command: ["catalina.sh", "jpda", "run"]
    networks:
      - default

  # 需要nginx、mysql、redis、activemq配置都可以在這里加上

networks:
  default:

docker中spring boot實現遠程調制配置

首先,我們要讓要讓遠程服務器支持遠程調試功能,在項目啟動項上追加特定的 JVM 參數即可,參數如下:

晚於 JDK 1.4.X 版本

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001

配置docker-compose.yml

app.jar指打包后的spring boot包

version: '2.2'

services:
  test:
    container_name: test

    ports:
      - "8080:8080"
      - "5005:5005"

    CMD ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","-Dspring.profiles.active=sit","app.jar"]

配置IDEA

打開配置窗口

在這里插入圖片描述

點擊左上角+號,找到remote,配置服務部署的服務地址,如果是本地測試配置localhost,配置上文配置中指定的端口

在這里插入圖片描述

在這里插入圖片描述

選擇啟動,即可調試遠程項目

img


免責聲明!

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



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