项目实施过程中,总会有各种诡异的问题发生,其中很大可能是环境问题。比如开发、测试环境都是好的,但是生产环境却有问题,bug无法重现怎么办,这时候就想要是能远程debug就好了。其实Java本身就支持远程debug的哦,具体步骤也很简单,idea、eclipse的调试方法也基本一致。
![f3653f890aae17d1c06aa6b81784f0b6.png](https://i-blog.csdnimg.cn/blog_migrate/6342d79c2bc28b67d5cdf2b31765b733.jpeg)
要让远程服务器运行的代码支持远程调试,在服务启动的时候加上特定的JVM参数就可以了,格式如下,
-Xdebug -Xrunjdwp:transport=dt_socket,address=8088,suspend=n,server=y
其中address指的是用于debug的端口号。
比如我们部署的是一个spring boot应用,则可以这样开启远程调试:
一、远程服务,配置JVM启动参数
服务启动时加入开启远程调试的参数,这里注意指定下远程debug的端口号,后面远程调试的时候需要连接这个端口号。
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,suspend=n,server=y -jar myService.jar
![d68a063f8d49e15b57f452dda3c25806.png](https://i-blog.csdnimg.cn/blog_migrate/de264a4a20279109855d6702a3e5e8e7.jpeg)
二、本地代码,配置远程debug连接
打开Intellij IDEA,在顶部靠右的地方选择“Edit Configurations…”,进去之后点击 + 号,选择“Remote”,新建远程调试连接。这里注意配置几点,
- Host,指的是需要远程调试的服务器地址。
- Port,就是上面配置的用于调试的端口号。
- module,是指用于远程调试的本地代码库,这里注意本地代码需要和远程代码保持一致,断掉打在本地就可以了。
![36ce0ed0840143e6ced2bf703d31900e.png](https://i-blog.csdnimg.cn/blog_migrate/bbddc5c3b8f3f5e08a4acb85d2af9c04.jpeg)
三、开始远程debug
上面两步配置完成后,就可以开始我们的远程debug了,debug启动刚刚配置的Remote server。打开我们的本地代码,断点打好,就可以开始远程调试了。
![e05e61b8c8d4d2e5546462b7b4126960.png](https://i-blog.csdnimg.cn/blog_migrate/39a3e0263fcd972c32627e89a60cadcd.jpeg)
这里注意下,远程调试虽然方便,但是也要慎用,测试、开发环境一般问题不大,生产环境可要慎用哦。