Java远程调试首先需要配置远程java程序的启动参数,开启相应的调试端口。
对于一般的application程序,在启动命令行中加入下面参数即可:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
对于tomcat启动的程序,需要在catalina.sh/bat 中加入
SET CATALINA_OPTS=-server -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
一些常用参数含义:
-XDebug 启用调试。
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport 用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
dt_shmem 共享内存传输,仅限于 Windows。
server=y/n VM 是否需要作为调试服务器执行。
address=3999 调试服务器的端口号,客户端用来连接服务器的端口号。
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。
-Xnoagent 禁用默认sun.tools.debug调试器。
-Djava.compiler=NONE 禁止 JIT 编译器的加载。
配置完启动参数后,重启远程java程序,就可以在本地调试了。
下面图示如何在Intellij IDEA中进行远程调试:
1. 打开配置页
2. 新增远程调试配置
3. 设置远程调试ip和端口
4. 源码中设置断点