前言
在我们真实项目开发过程中,又是经常会发现一种问题,就是我们在开发环境功能是正常的,在测试环境可能也不太容易发现问题。
结果到了生产环境,由于数据量大,且数据类型变多后,就产生了一些比较难复现的问题。
当这类问题产生的时候,我们通常排查的思路是首先检查一下代码,看是否代码确认存在明显的问题。
如果通过查看代码看不出什么问题,我们可能会通过增加日志,在每一句代码的结果输出执行结果,或者打上标识日志。然后把增加了日志的代码再打包然后上传的生产环境去运行,然后等程序再次发生错误时,根据日志定位产生问题的代码。
通过打日志操作起来比较麻烦,通常等排查完问题后,还需要将日志删掉,然后再去将修改后的代码打包上传到生产环境。
所以除了这些方式去排查问题,还有什么其他的方式可以排查问题吗?
正文
我们今天给大家介绍一种问题排查方式: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中的监听服务。
然后此时我们就可以去对应的代码打断点,然后去操作项目环境对应的功能,等功能走到断点处,就会被拦截到。