idea debug服务器端代码

前言

开发过程中遇到一个问题: 在本地运行正常的代码放到服务器运行不符合预期, 本地debug正常, 需要debug远端代码.

需要保证本地代码与远端代码一致


(一) 服务器端配置

以java -jar启动为例, 假设服务运行在8080端口
在启动时添加参数:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081 -jar xxx.jar 

这种方式启动jar包会占用两个端口, 一个是服务运行的8080端口, 一个是address指定的8081端口(用于远程debug通信)

(二) idea配置

先打开项目, 然后编辑启动/debug配置信息, 添加远端操作配置
image.png
其中Debugger mode选择Attach to remote JVM(主动连接到远端JVM)
Transport选择Socket
host和port写远端服务的ip和addres指定的8081端口

(三) 远程debug

先服务器端代码(jar包), 然后idea端以debug模式启动这个remote应用, 控制台出现:

Connected to the target VM, address: '服务器端ip:8081', transport: 'socket'

即连接成功.
在需要debug的本地代码处打断点, 等待服务器端代码执行到断点处即可.