当前位置: 首页 > news >正文

Java项目通过IDEA远程debug调试

前言

在我们真实项目开发过程中,又是经常会发现一种问题,就是我们在开发环境功能是正常的,在测试环境可能也不太容易发现问题。

结果到了生产环境,由于数据量大,且数据类型变多后,就产生了一些比较难复现的问题。

当这类问题产生的时候,我们通常排查的思路是首先检查一下代码,看是否代码确认存在明显的问题。

如果通过查看代码看不出什么问题,我们可能会通过增加日志,在每一句代码的结果输出执行结果,或者打上标识日志。然后把增加了日志的代码再打包然后上传的生产环境去运行,然后等程序再次发生错误时,根据日志定位产生问题的代码。

通过打日志操作起来比较麻烦,通常等排查完问题后,还需要将日志删掉,然后再去将修改后的代码打包上传到生产环境。

所以除了这些方式去排查问题,还有什么其他的方式可以排查问题吗?

正文

我们今天给大家介绍一种问题排查方式:IDEA远程debug调试。

首先我们先在idea中创建一个远程debug服务的配置

在这里插入图片描述

在这里插入图片描述

然后将Command line arguments for remote JVM:区域生成带jvm参数复制一下,其中端口port可以自己定义。

然后将这段jvm参数添加到项目服务启动的参数中。

我们的项目通常有两种部署方式:

一种是springboot项目直接打成jar包去部署启动

一种是将项目打成war包然后部署到web服务器上,如tomcat。

这两种方式我们都演示一下。

1、打成jar包直接部署启动

我们在启动参数中添加上面复制的内容,如下:

java -jar transfer-web-1.0-SNAPSHOT.jar   -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

然后等待服务启动成功后,我们再启动idea中的监听服务

在这里插入图片描述

然后此时我们就可以去对应的代码打断点,然后去操作项目环境对应的功能,等功能走到断点处,就会被拦截到。

2、war包部署到tomcat

我们需要在tomcat服务器的启动参数中添加上面复制的监听的参数。

对于linux环境下的tomcat,我们先找到bin目录下的catalina.sh,然后修改文件中的这行配置

CATALINA_OPTS="$CATALINA_OPTS"

将上面复制的监听的参数,添加到这个配置中,添加完后如下:

CATALINA_OPTS="$CATALINA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

然后就可以重启tomcat了,然后我们再启动idea中的监听服务。

然后此时我们就可以去对应的代码打断点,然后去操作项目环境对应的功能,等功能走到断点处,就会被拦截到。

们再启动idea中的监听服务。

然后此时我们就可以去对应的代码打断点,然后去操作项目环境对应的功能,等功能走到断点处,就会被拦截到。

http://www.lryc.cn/news/425054.html

相关文章:

  • Python 绘图入门
  • RK3568平台(背光篇)背光驱动代码分析
  • 华为od统一考试B卷【比赛】python实现
  • Prometheus 监控接入规范
  • 优化 SQL 查询性能:深入理解 EXPLAIN 命令
  • @Mapper报红
  • shell综合小实验1-----查看系统硬件信息
  • 【过程管理】项目需求管理规程(Word原件)
  • C# 不使用 `async` 和 `await` 的常见场景
  • adb目录笔记《adb更新、进入开发者模式,adb查询packages、adb开启应用,查询进程、强制删除进程》
  • VS2022 C++ EasyX EGE 吃豆人升级版
  • 计算机图形学 | 动画模拟
  • B2.3 Arm 内存模型定义
  • (javaweb)SpringBootWeb案例(毕业设计)案例--部门管理
  • PCL 采样一致性模型介绍
  • Unity手游开放大世界解决方案
  • mysql B+ 树
  • Sublime Text常用快捷键大全
  • 中成科信票务管理系统 TicketManager.ashx接口SQL注入漏洞复现 [附POC]
  • 设计模式六大原则之:依赖倒置原则
  • 06_Linux中如何让程序重启后自动启动
  • 优化业务流程的关键:深入探讨BPA流程设计
  • qt工程中调用sdl的流程
  • ECMAScript性能优化技巧与陷阱
  • c++实现B树(上)
  • 【机器学习】深度强化学习–RL的基本概念、经典场景以及算法分类
  • 【git】将本地文件上传到github
  • 安卓应用开发学习:手机摇一摇功能应用尝试--摇骰子和摇红包
  • HTML中的<fieldset>标签元素框的使用
  • Linux驱动入门实验班——SR501红外模块驱动(附百问网视频链接)