远程调试的正确姿势

目前测试环境开启了远程调试,但是很多小伙伴不清楚远程调试的正确姿势,容易影响其他人对于测试环境的使用,更严重的可能会导致服务不可用。这里讲一下我们了解到的远程调试正确姿势,供小伙伴们参考。

一、远程调试的开启
1)Tomcat工程是在tomcat所在目录下的bin/startup.bat中,加入

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

2)springBoot工程在启动时加上同样的参数

java -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar ***.jar

具体的参数含义:

-server是通知JVM工作在服务器模式下

-Xdebug是通知JVM工作在DEBUG模式下

-Xnoagent禁用默认sun.tools.debug调试器

-Djava.compiler=NONE禁止 JIT 编译器的加载

-Xrunjdwp加载JDWP的JPDA参考执行实例(JDWP是java调试传输协议,即调试器与目标java程序之间的传输协议。JVM自带对这个协议的支持。)

transport用于在调试程序和 VM 使用的进程之间通讯

dt_socket套接字传输

server=y/n JVM 是否需要作为调试服务器执行

suspend=y/n是否在调试客户端建立连接之后启动 JVM(如果排查远程服务启动不成功的问题,可以尝试设置为y,这样工程启动时就会连接到本地)

address调试服务器的端口号,客户端用来连接服务器的端口号

二、IDEA调试器的使用

1.查询远程服务地址及调试端口

Ip可以在弹性云中看到容器地址。

端口可用ps -ef|grep ***查看进程信息,如果开启了远程调试,可以看到上述参数,address为调试端口。

2.新建远程连接

点击edit Configurations,点击+新增,点击remote。

远程调试的正确姿势_第1张图片

设置name/host/port
远程调试的正确姿势_第2张图片

3.点击debug图标,出现以下提示即为远程连接成功
在这里插入图片描述

4.设置与使用断点

在想要调试的代码上轻轻一点就能打上断点。但是我们很有必要对断点进行一些正确的设置,使用时也要有注意点。不然很容易产生不良影响。

1)断点选Thread,有必要可加Condition

远程调试的正确姿势_第3张图片

Thread与all的不同点在于,当进入Thread断点时,未打断点的请求依然可以访问。

当进入All断点时,整个服务的请求都会被阻塞住。

Condition的写法与java语法一致。如
远程调试的正确姿势_第4张图片

2)进入断点后,点击mute

爱护环境,人人有责。远程环境需要我们大家一起爱护,用了远程调试,可能会影响别人的调用。而且如果是RPC服务,长时间得不到响应可能会导致集群认为远程服务是脏节点,导致后续的请求都不能得到响应,一段时间才能恢复。

一个非常好的避免方法就是,当我们的程序进入断点后,迅速点击mute,这样别人再次调用这个接口时能够调通。并且不会影响我们这一次的调试。
远程调试的正确姿势_第5张图片

你可能感兴趣的:(java)