前言
开发过程中遇到一个问题: 在本地运行正常的代码放到服务器运行不符合预期, 本地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配置信息, 添加远端操作配置
其中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的本地代码处打断点, 等待服务器端代码执行到断点处即可.