IDEA debug 远程 JVM 解决线上部署疑难杂症
“ IDEA debug 远程 JVM 解决线上部署疑难杂症”
工作中经常会遇到开发时正常, 部署线上就出错的问题, 尤其是问题发生在引用的第三方 jar 时, 往往日志是不能定位问题的. 此时, 如果能用本地 IDEA 和代码 debug 调试服务器上的服务的话将会很好,很容易的定位和解决问题, 而 IDEA 其实本身就是支持本地连接远程 JVM 以实现远程 debug 的.
0. 环境准备
准备一个基于 maven 的 SpringBoot 项目做为演示, 并打成 jar 包在服务器运行
1. 远程服务器增加 JVM 参数开启调试模式
在服务器运行时添加如下参数(命令可以直接从 IDEA copy):
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
或者
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
完整命令:
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 test-lsh-0.0.1-SNAPSHOT.jar
或者
java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 test-lsh-0.0.1-SNAPSHOT.jar
其中
5005
为服务开放的调试端口, 可以随意指定. 当服务运行时看到如下输出即表示服务以调试模式运行成功.
2. IDEA 配置
进入 Edit Configurations
或者
添加远程连接
输入远程服务地址和调试端口(注意是第一步指定的调试端口, 不是服务启动端口)
其中:
Debugger Mode
:
Attach to remote JVM
: 连接到远程 JVM
Listen to remote JVM
: 开启一个端口供远程去连接
Command Line
显示的参数其实就是第一步服务端启动的参数, 可以直接 copy.
启动调试
当看到下面输出就表示远程调试已连接
3. Debug
首先在本地代码中添加断点
测试访问 controller, 观察debug 是否成功
请求
http://192.168.3.122:80/test
请求
http://192.168.3.122:80/test?user=JackLi
如果有任何相关的问题都可以加入 QQ/微信群一起讨论, 学习, 进步. 此外如果有任何对于本公众号的意见和建议也欢迎大家留言积极批评指正, 最后, 愿你我都能成为更好的自己.
我是帅帅, 一个集帅气, 幽默与内涵, 并且热爱编程, 拥抱开源, 喜欢烹饪与旅游的暖男, 我们下期再见. 拜了个拜!
每文一句
————
Don't aim for success if you really want it. Just stick to what you love and believe in, and it will come naturally.
少一些功利主义的追求, 多一些不为什么的坚持.
日常求赞
————
你们白漂的力量就是我拖更的史诗级动力, 点赞, 评论, 再看, 赞赏, 看都看到这了, 随便点一个咯.
关注加好友
拉你进大佬交流群
————————————————