前言
当我们的代码在线上/测试环境运行出现异常需要进行问题定位时,之前的传统做法是:查看异常日志,根据日志定位到出错代码,然后再根据相关参数及异常信息进行推断。但是很多异常问题需要更细致的进行debug才能够更精准的去定位和解决,这种情况下,我们希望能够像在本地调试一样去debug线上/测试环境的代码,这样可以大大提升bug修复的效率,IDEA非常贴心的为我们提供了这一功能,具体用法如下:
配置步骤
远程服务启动参数
使用如下命令启动服务端程序;
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -jar 待发布的程序jar包名称.jar
本地IDEA配置
1.菜单栏选择 Run | Edit Configurations 或按快捷键 Alt+Shift+F10 然后选择 “0.”;
2.在 Run/Debug Configurations面板,点击左上角“+”号,然后选择“Remote”;
3.配置“Remote” 属性:
- Name:配置Remote Debug的名称,可以是任意名称;
- Host:配置服务器的域名或ip地址,Port 使用默认值5005,也可以是其他端口;
Command line arguments for remote JVM:配置Debug远程服务的命令行启动参数,本地在Debug时会监听远程服务的对应端口并运行调试环境,具体的参数说明如下:
- -Xdebug:JVM在DEBUG模式下工作;
- -Xrunjdwp:JVM使用(java debug wire protocol)来运行调试环境;
- transport:监听Socket端口连接方式,常用的dt_socket表示使用socket连接;
- server:=y表示当前是调试服务端,=n表示当前是调试客户端;
- suspend:=n表示启动时不中断;
- address:表示本地监听的地址和端口。
然后在本地程序中在需要调试的代码处设置断点,最后再按 Alt+Shift+F9 选择之前配置的remote debug并点击“Debug”运行;
请求&调试
向服务器的接口发起请求, 可以观察到请求会进入本地程序设置断点处,至此实现IDEA进行Remote Debug;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。