1、场景
通常来说我们的服务都是部署在各种远程服务器上的,本地开发完成部署到服务器长期运行。当线上出现问题的时候,或者远程出现问题的时候我们经常需要打印一些日志来判断问题所在。还有一种情况是本地开发环境正常,但是部署到远程环境就会出现各种神奇的问题,这个时候去如果只在本地看代码或者纯看日志会比较麻烦。这个时候我们就可以使用远程Debug方式进行远程调试,不用频繁的修改/部署到远程服务器上这样调试
要远程调试,需要远程服务开启远程调试,然后本地去连接远程服务进行debug
2、远程服务配置
远程调试是需要手动开启的,所以一般来说是关闭的。当我们需要使用的时候通过设置JVM启动参数来实现。在启动的时候添加下面这些参数
启动添加以下参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005(debug监听端口号)参数解释:
-agentlib:jdwp:指定使用Java调试代理库(Java Debug Wire Protocol)进行调试
transport=dt_socket:指定调试连接的传输方式为套接字(socket)
server=y:表示服务器模式,即允许远程调试连接
suspend=n:设置为y,表示在调试客户端连接之前,JVM会暂停执行;设置为n,表示即使没有调试客户端连接,JVM也会继续执行
address=5005:指定调试连接的端口号为5005
如下图:
通过将这个配置字符串添加到 Java 启动命令中,可以在服务器上启用远程调试,并允许通过指定的端口进行连接。在本地开发环境中,可以使用相应的调试工具(如 IDE)连接到服务器上的调试端口,进行远程调试。注意确保服务器和本地开发环境之间的网络连接正常,并且防火墙设置允许远程调试连接。
3、本地配置
需要在本地机器上的5005端口监听调试请求,以idea举例,可以这样启动Java程序
设置远程服务的IP和我们在服务端配置的端口
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
4、本地调试
打开本地开发环境,连接远程环境
直接使用swagger请求远程的借口
我们就可以在本地调试远程服务了
有兴趣可以关注公众号,新博客第一时间先发布公众号后才会同步博客园