使用远程Debug来分析问题

经常会遇到这样一个场景,项目部署到测试服务器上,当测试人员测出一些问题的时候,我们需要通过运行日志来查找问题并解决。但是并不是所有的问题都可以通过日志来解决的,比如要查看用户请求的变量和对象的一些信息,我们就需要通过断点来调试查看。正常的断点一般是在本地,但其实远程服务器的程序用Debug模式运行,然后本地连接上Debug端口,直接在本地打断点进行远程调试也未尝不可。

1.将jar包部署到服务器,使用debug模式运行项目,并且指定端口号为5005

1
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -jar spring-boot-0.0.1-SNAPSHOT.jar &

服务以Debug模式启动,Debug监听在5005端口

1
Listening for transport dt_socket at address: 5005

2.idea中添加一个Remote,主机地址和端口号写对应服务器的ip地址和Debug端口号
Transport 选择Socket, Debugger mode 选择Attach

3.点击debug按钮,将会连接到远程debug端口,请求对应的接口,本地代码打上断点

可以看到用户访问服务器上的接口,本地断点成功断到用户请求,然后就可以分析问题了。

0%