IDEA线上排错神器之Remote JVM Debug(JVM远程Debug)
首先我们新建一个最简单的 Spring Boot 项目,输出 12345 是为了方便我们调试通过 Maven 进行打包,并上传至远程服务器,我这里使用的虚拟机使用以下命令运行 jar# JDK5-8java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-jvm-debug-0.0.1-S
嗨,大家好啊!我是 jonsson。你是否为线上排查问题而苦恼,今天教你不发版的情况下进行线上 Debug。
第一步
首先我们新建一个最简单的 Spring Boot 项目,输出 12345 是为了方便我们调试
通过 Maven 进行打包,并上传至远程服务器,我这里使用的虚拟机
使用以下命令运行 jar
# JDK5-8
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-jvm-debug-0.0.1-SNAPSHOT.jar
以上参数可以在 IDEA 中找到,根据自己 JDK 的版本 copy 参数,本例使用的是 JDK8
参数说明:
-
transport: 监听 Socket 端口连接方式(也可以 dt_shmem 共享内存方式,但限于 Windows 机器,并且服务提供端和调试端只能位于同一台机)
-
server: =y 表示当前是调试服务端,=n 表示当前是调试客户端
-
suspend: =n 表示启动时不中断(如果启动时中断,一般用于调试启动不了的问题)
-
address: =5005 表示本地监听 5005 端口
注意
-
因为这里使用到
5005
,所以远程服务器如果开启防火墙需要放行5005
端口Linux 查看防火墙状态:
systemctl status firewalld
Linux 暂时关闭防火墙:
systemctl stop firewalld
-
-agentlib:xxxx
必须在-jar
之前
jar 运行之后的效果如下
第二步
远程启动好 jar 后,在 idea 中配置远程 Debug,如图所示:
最后我们运行 Remote JVM Debug,并在程序中打一个断点
我们使用 Postman 请求接口后,此时就可以调试线上的程序了,需要注意的是,本地程序不需要运行,但是必须保证本地的代码和远程服务器上的代码是一致。
JVM 远程 Debug 可以帮助我们快速排查线上的 Bug。如果本文对你有帮助可以帮忙点免费的赞。
更多推荐
所有评论(0)