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,配置上文配置中指定的端口


选择启动,即可调试远程项目

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解Java中NullPointerException异常的原因和解决办法
本文主要介绍了详解Java中NullPointerException异常的原因和解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07
Spring Boot 整合 Mockito提升Java单元测试的高效实践案例
Mockito与Spring Boot的整合为Java开发者提供了一套完整的解决方案,使得单元测试更为精准、高效,从而确保了代码质量、降低了维护成本,并促进了项目的持续集成与交付,感兴趣的朋友跟随小编一起看看吧2024-04-04
Java8 Stream API中实现集合list转map的多种方式
这篇文章介绍了如何使用Java8的StreamAPI对QuotaDto对象列表进行操作,包括字段提取、映射、组装成Map、枚举类处理、元素拼接、聚合函数以及去重,文章的示例代码讲解详细,感兴趣的小伙伴可以了解下2025-12-12
SpringIOC BeanDefinition的加载流程详解
这篇文章主要为大家介绍了SpringIOC BeanDefinition的加载流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10


最新评论