线上(真-线上/测试环境)代码出了问题,老是要在本地复现,而后debug,这个过程是在是不太友好,并且线上的不少数据本地没有,常常耽误很久的时间来同步数据.java
前文介绍过一种在运行时DEBUG及修改Java代码的方式,阿里开源java动态追踪工具 Arthas的使用.其主要针对的是线上修改代码及JVM实时查看.linux
可是有不少问题,咱们更想要IDE的DEBUG功能,好比线上跑了NPE,本地没有办法复现由于多是线上的数据问题,这时候就会想,若是能够在线上这里打个断点,就知道是谁为空了.socket
幸亏Java是有远程DEBUG的支持的,并且Intellij-IDEA也实现了相关的功能,今天学习而且记录一下.工具
首先在服务端使用JVM的-Xdebug
参数启动Jar包.学习
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555 -jar huyan-demo.jar
测试
参数说明:debug
-Xdebug:JVM在DEBUG模式下工做;调试
-Xrunjdwp:JVM使用(java debug wire protocol)来运行调试环境;code
transport:监听Socket端口链接方式,经常使用的dt_socket表示使用socket链接.cdn
server:=y表示当前是调试服务端,=n表示当前是调试客户端;
suspend:=n表示启动时不中断.
address:=8000表示本地监听5555端口。
服务端以DEBUG模式启动了jar包以后,基本上就完成了,只须要在IDEA中作一些配置,以下图:
添加一个新的启动项,选择Remote
,以后在配置信息里面填入你启动的服务端的IP地址
及调试端口
.
以后点击debug按钮,像本地同样的开始debug吧~.
完。
以上皆为我的所思所得,若有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文连接。
联系邮箱:huyanshi2580@gmail.com
更多学习笔记见我的博客------>呼延十