跳到主要内容

远程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 &

前提条件

需要本地能访问到远程服务器的非项目端口号

操作

  • 打包项目文件,上传到远程服务器中,先不启动。

  • 本地配置:

    1. 启动配置 中,点击 编辑配置(Edit Configurations...)
    2. 在配置中,点击 添加(+),选择 远程JVM调试(Remote JVM Debug)
    3. 调整相关参数(端口非项目端口,是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了。