以前开过远程调试,用起来总是不尽人意,也用过BTrace等,用不习惯,难用!
但是阿里这个小工具对我来说简直就是黑夜里的明灯,神灯。一百分安利
下载链接
使用说明:https://arthas.aliyun.com/doc/download.html
优点:
1 命令行交互操作简洁,界面友好
2 查看的内容多,可以洞悉内部运行情况
3 不需要网络,拷贝一个jar包即可,只要有服务进程相同的执行权限即可
4 基于动态字节码增强技术,退出后可以还原重置内部类,不影响服务正常运行,可以悄悄地就把bug给查了
准备工作,启动运行一个jar包即可!需要和目标进程同一用户启动运行,一定要记得结束退出时候用stop命令,如果是异常等情况没来的及执行stop,也记得要重新启动运行再连进去执行stop命令,用来重置被修改增强的目标进程,否则…
常用使用场景:
1 dashboard
2 thread
3反编译指定类的源码
可了解版本冲突,版本不一致等问题
jad com.chinaoly.frm.core.baseDao.redis.RedisKeyValuesDao
4方法执行数据观测
让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。异常信息被捕获吃掉了,日志无法看到异常详情
watch com.chinaoly.frm.login.util.GetZtUserInfo getZtUserInfo returnObj
下图解释:当响应超过100毫米,第一个参数不为空,第二个参数是admin,则打印输入输出参数和异常信息
5 查看JVM已加载的类信息
sc -d com.chinaoly.frm.core.service.BaseService
6 查看已加载类的方法信息
sm com.chinaoly.frm.core.service.BaseService
sm -d com.chinaoly.frm.core.service.BaseService getDictList
7方法执行数据的时空隧道
记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测,和watch搭配使用
tt -t com.chinaoly.frm.login.controller.LoginController checkLogin
8 打印调用链路
track com.chinaoly.frm.login.controller.LoginController checkLogin
9 方法内部调用路径,并输出方法路径上的每个节点上耗时
trace com.chinaoly.frm.login.controller.LoginController checkLogin