IDEA远程连接服务器Java程序进行断点调试(对Docker中Tomcat容器,jar,Tomcat的远程调试看这篇就够了)

网友投稿 443 2022-11-03


IDEA远程连接服务器Java程序进行断点调试(对Docker中Tomcat容器,jar,Tomcat的远程调试看这篇就够了)

简介:

对于本地项目测试没问题,发布线上各种奇奇怪怪的问题接踵而来,对此开发同学心里有何感想,跟老板battle还是默默查原因,苦逼的你只能加班解决问题,也不知道是请求方导致的问题还是程序自身的原因,接下来就对Idea调试怎么调试线上程序展开讲解。

发生现场

好巧不巧我就就遇到,本地没问题线上运行了好久也没问题,突然那天线上的程序就出现订单进入系统不创建的问题,我这简单说下创建流程,由上游提供数据,我们的程序会吧订单数据保存到临时表中我们会把大部分数据保存在临时表中,订单真实表则保存系统生成的订单号和订单初始状态,然后通过定时器对临时表里面的数据进行组装完成后在,保存到订单真实表中!,所以上游说订单推送了为什么我们的系统没有订单号信息,就是因为定时器中的代码好像没被运行,这个就很奇怪,但是看代码结构是有对redis中的键判断查询不到才会运行后续流程,排查了redis没有问题于是就对代码可能影响方法运行的地方都打了日志后续也没有出现问题。但是虽然现在可能不会出现问题,那不意味着以后用不上这个远程调试,说了这么多也该进入正题了!!!

【前提】:

1.远程调试的Java项目要和本地的代码一样! 2.如果是War需要对服务器tomcat的启动配置进行修改 3.如果是在Docker中使用Tomcat运行War需要对容器添加一个新端口

【IDEA创建配置】

运行后左下角肯定会报,拒绝连接

【按照情况使用对应方式】

1.Docker中Tomcat运行War

【添加新端口】

远程服务器中Java在Docker容器中运行War包时

注意:

我这边已经配置好我Dokcer中的容器添加新端口用于远程连接,容器​​内部端口为8081​​​,​​宿主机(Linux对外访问的端口)端口为8082​​

【修改容器启动配置】

进入容器修改Tomcat的启动配置信息

docker exec -it 容器id bash

然后使用vim 编辑 ​​bin/catalina.sh​​的配置文件

这里提示容器内部没有vim命令我们这在容器安装下

​​apt-get update​​

​​apt-get install vim​​

然后输入y回车

然后安装完成后在​​vim bin/catalina.sh​​进入编辑

然后再第一行添加以下代码

​​address=8081​​表示启动会创建8081端口运行端口号要改成容器新添加的端口

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081"

保存好后,退出容器内部

重启容器:​​docker restart 容器id​​

回到Idea修改端口信息

debug运行后,出现以下输出表示断点远程连接服务器完成

【测试断点进入】

使用请求工具发送模拟请求:

到这里Docker中Tomcat运行War的远程断点就完成了!

2.运行Jar包调试

【编写测试接口】

在项目中添加远程断点接口用于测试,​​/weChat/debug​​

我们先本地进行调用保证后续请求不出问题!

只需要在后端添加一行配置就行

​​produces ="text/html;charset=UTF-8"​​

响应正常了

【jar包上传服务器】

现在我们把项目部署到服务器中,并且打包方式为jar包部署

在​​start.sh​​脚本中添加启动命令

nohup java -jar itmei.jar > /dev/null 2>&1 &

运行jar包

​​ps -aux | grep 包名称​​查看进程

记得服务器使用到的端口要在对应服务商(阿里云,腾讯云)平台找到对应服务器实例开启防火墙设置端口信息到安全组里面

在测试请求接口

完成服务端的项目启动现在还不能远程debug需要在启动脚本添加参数

【启动脚本添加配置】

​​${debug_port}​​设置成我们需要添加端口用于Socket连接使用的端口

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}

我怎么把Socket连接端口设置成​​8086​​,该端口也要在防火墙里面设置才能访问

启动脚本修改为

nohup java -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8086 -jar itmei.jar > /dev/null 2>&1 &

配置信息​​必须在-jar前面​​

把之前的进程​​kill​​ 掉

然后再运行​​./start.sh​​

【IDEA设置断点连接】

IDEA运行Debug模式

【测试断点进入】

使用请求工具发送模拟请求:

完成远程调试

3.Tomcat运行War包调试

其中我觉得这个都可以不用写下去,因为配置这个和前面写的Docker中Tomcat运行War调试的教程大差不差

由于没有安装Tomcat所以想偷懒不想再Linux中再安装(-_-)

我就当你们已经有在自己服务器中安装Tomcat的配置并且,还知道怎么修改tomcat的运行端口号,接着我就快速安装下tomcat完成后面的演示!

想了想,之前小白时候的自己看文章,作者也是一笔带过一些知识点,导致后面不知道写些什么,所以又写了一篇关于Linux安装Tomcat并且修改指定端口号的文章用于配备当前不太懂的小伙伴,给我点个赞吧,老铁(✪ω✪)!​​​文章地址​​

【SpringBoot 打成War必看】

SpringBoot 打成War如果是单纯在​​pom.xml​​​打包方式改成​​war​​ 在这里插入图片描述

【War包上传服务器】

进入 ​​webapps​​目录下

使用工具把War上传到该目录下

【修改启动配置】

然后​​vim catalina.sh​​​进入编辑 然后再第一行添加以下代码

​​address=8088​​表示启动会创建8088端口用于IDEA的Socket连接调试

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8088"

保存完成后在运行tomcat

记得配置防火墙8088的端口,不然访问不了

【IDEA设置断点连接】

配置好后运行

【测试断点进入】

使用请求工具发送模拟请求:

Tomcat运行控制台打印信息

完成远程调试


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:包含8X8X域名IP地址IP查询API的词条
下一篇:手机查询API(手机查询APP使用记录)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~