在应用服务完成部署之后,对于所有人而言其内部执行都是黑盒,当出现异常时如何快速定位异常也成为了重中之重。在本地开发时,作为开发人员可以通过程序断点调试轻易的发现问题根源,可一旦服务发布到线上环境时,更多的情况只能通过日志跟踪的方式排查问题。
幸运的是,在 IDEA
中提供了远程调试的功能,可以实现线上服务断点调试,本文将介绍如何进行配置。
1. 服务配置
在 IDEA
中启动配置中新增 Remote JVM Debug
并填写对应对应的服务 IP
与端口。
2. 启动参数
在上一步的配置之后可以看到生成了如下一串 JVM
参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
上述配置参数我们只需关心 address=*:5005
,其中 5005
表示远程调试连接端口。
有了上述配置信息,接下来只需要在服务启动命令上添加即可,示例如下:
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar my-application.jar> application-info.log 2>&1 &
3. 断点调试
完成上述步骤后启动线上服务与 IDEA
中的服务即可,此时线上服务请求将会被转发到本地工程断点中。
需要注意的一点是本地工程代码需要和线上服务的代码保持一致,否则可能会出现断点行数不匹配的问题。