作为一个小菜鸟,写写arthas 的使用体验
Arthas作为一款线上排错的工具,侵入性极低、操作简单对新手很友好.平常在开发工具开发有可以debug断点调试较为方便,但是线上 的项目运行在Linux上无法进行断点调试只能通过看日志的手段进行排查.这种方式对于现场以及开发都比较繁琐、针对性较低.针对这种情况Arthas有很好的解决方式,我们来看下
环境:只需要jdk就可以,具体版本参考arthas对应版本要求;通常情况jdk1.8可以运行
命令:java -jar arthas-boot.sh(如果jdk没配环境变量就需从jdk目录下启动)
启动arthas,启动成功界面如下会让你选择需要监控的项目进程(如果你不知道自己的项目的进程号用ps -ef|grep projectName来查看自己项目的进程号)
监控成功了之后,就需要找自己想监听的类和方法,注意类名需要带上完整的包名
命令:sc *className*
根据类名查找符合该类名的完整包名
命令:sm packageClassName *methodNme*
根据方法名查找该类下符合的方法名
命令:watch packageClassNamemethodName "{params,returnObj}" -x 5
监听该类这个方法的入参和出参,-x 5为输出数据的深度可根据数据进行调整;深度设置过深可能会出现输出数据的界面格式崩溃的问题
命令:jad packageClassName
反编译该类,可以直接在linux界面上查看代码;省去了拷出来反编译的麻烦
熟练使用以上功能,基本上能应付简单的线上调试;arthas还有很多进阶命令可以到官网查阅https://alibaba.github.io/arthas/