前言
公司里的项目是需要运行在设备上面的,有时候想看看某个结果输出了什么只能在代码中加各种log,然后重新部署到机器,上线,调试,这样非常费时。
偶然间在公众号上了解到了远程调试的功能,解决了上述问题。
要让远程服务器运行java程序时支持远程调试,启动时加上JVM参数:
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}
${debug_port}是用户自定义的debug端口,例如:
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8020
具体命令为:
jdk1.7版本之前的命令:
java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar xxx.jar
1.7版本之后的命令
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
如果将address设置为127.0.0.1:8020,表示将调试端口限制为本地访问,远程无法访问,在临时需要调试的时候,单设置端口号即可。
- IDEA设置连接远程DEBUG端口
在Intellij IDEA的右上角选择”Edit Configurations…”,如图1所示。
图1 IDEA远程调试配置
选择在上一步设置好的Remote JVM Debug,然后点击旁边的debug按钮,控制台日志出现“Connected to the target VM, address: 'xxx.xxx.xxx.xxx:8020', transport: 'socket'“的时候就表示连接成功,此时就可以开始调试了。
需要注意一点,本地用于debug的程序必须与远程部署的程序完全一致,否则将无法调试。