有时候想调试线上的程序 可以启用远程调试功能 在本地调试远程代码。

远程JVM启用调试模式

/usr/local/jdk/bin/java -server -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=128m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1506 -jar /home/web/api-1.0-SNAPSHOT/lib/api-1.0-SNAPSHOT.jar --spring.config.location=file:/home/web/api-1.0-SNAPSHOT/conf/

-XDebug 表示虚拟机启用调试功能
-Xrunjdwp 加载JDWP
transport 调试程序JVM使用的进程之间通讯方式
dt_socket socket通讯
server=y/n JVM是否需要作为调试服务器执行
address 调试服务器监听的端口号
suspend=y/n 调试客户端建立连接之后启动虚拟机

JVM启动之后用验证监听的端口号是否生效了 netstat -anp | grep 1506

tcp        0      0 0.0.0.0:1506                0.0.0.0:*                   LISTEN      4841/java

本地调试配置

然后debug启动 访问远程服务器某个服务 在本地就支持打断点调试了。