远程debug
· 阅读需 2 分钟
场景
本地跑的没有问题,同样的代码到服务器上就有问题。当你认为代码已经天衣无缝,但又没有办法知道哪里有问题,那就试试debug一下远程代码吧。
原理
通过启动jdwp代理实现的,它允许远程调试
启动命令:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=50050 -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ -jar ${JAR_NAME} >/dev/null 2>&1 &
前提条件
需要本地能访问到远程服务器的非项目端口号
操作
-
打包项目文件,上传到远程服务器中,先不启动。
-
本地配置:
- 在
启动配置
中,点击编辑配置(Edit Configurations...)
- 在配置中,点击
添加(+)
,选择远程JVM调试(Remote JVM Debug)
- 调整相关参数(端口非项目端口,是debug的端口,注意下防火墙)
- 在
-
启动远程项目
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar ******.jar
-
启动本地调试 选择刚建好的远程启动,然后debug启动,控制台打印出
已连接到VM....
(Connected to the target VM, address: '127.0.0.1:5005', transport: 'socket'
)说明连接成功。
现在可以在本地打断点,然后远程服务器执行,就可以在本地debug了。