Idea如何远程调试

背景

分布式系统中日志是定位各种线上问题的重要手段,但是日志不能完全反映程序运行时的所有信息。下面介绍一种重量级的手段-远程调试,JVM远程调试通过JDWP协议。

JDWP是Java Debug Wire Protocol的缩写,它定义了调试器(debugger)和目标虚拟机(target vm)之间的通信协议。Target vm 中运行着我们要调试的 Java 程序,它与一般运行的JVM没有什么区别,只是在启动时加载了JDWP Agent从而具备了调试功能。而 debugger就是我们本地的调试器,它向运行中的target vm发送指令来获取target vm运行时的状态和控制远程Java程序的执行。Debugger和target vm 分别在各自的进程中运行,他们之间通过JDWP通信协议进行通信。

如何远程调试

接下来以一个RPC Server为例演示远程调试。

1.运行服务端:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=15555 -jar server.jar 

参数解释:

server =y (表示以debug server运行)
suspend=y  (y表示程序启动时会被阻塞,n表示不会)
address=15555 (debug server运行端口,debug client需要连接这个端口)

2.idea连接服务器debug端口

  1. 新建debug
    在这里插入图片描述

  2. 在代码中添加断点
    在这里插入图片描述

  3. 启动调试
    在这里插入图片描述
    这个时候就可以愉快的进行远程调试了。

猜你喜欢

转载自blog.csdn.net/cl2010abc/article/details/106386592