idea线上debug
- 1. 为什么需要线上debug
- 2. 基本原理
- 3.远程调试配置
- 3.1 1. 融合云增加JVM参数
- 3.2 idea配置
- 4. 注意
- 附录
1. 为什么需要线上debug
在微服务开发中,开发的服务可能会依赖数据库、消息队列等资源,也有可能依赖其他的服务,这些服务又有新的依赖,或同一套代码本地环境没问题测试环境出问题无法复现,这种情况下,在自己的开发环境中完全模拟测试、线上环境变的极其困难。
之前的传统做法是:查看异常日志,根据日志定位到出错代码,然后再根据相关参数及异常信息进行推断。但是很多异常问题需要更细致的进行debug才能够更精准的去定位和解决,这种情况下,我们希望能够像在本地调试一样去debug线上/测试环境的代码,这样可以大大提升bug修复的效率。IDEA 远程调试为我们提供了解决方案,像运行本地代码一样调试远程主机上的程序,以排查远程程序的BUG或代码执行流程。
2. 基本原理
本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。
被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。
调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。
3.远程调试配置
3.1 1. 融合云增加JVM参数
-Xdebug
-Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n
3.2 idea配置
Host:融合云对应实例 PodIp
Port:融合云JVM中 address端口
Use module classpath:选择需要远程调试的代码
启动远程调试
4. 注意
- 服务器代码必须与本地代码版本保持一致,否则远程调试可能串行。
- 本地断点会拦截所有测试环境的断点请求,后续请求会阻塞,请谨慎增加。
附录
1.IDEA 远程断点调试 debug