greys的简单使用

阿里开源的greys对问题排查非常有用,其底层使用instrument和asm字节码增强,简单记录下这个命令的使用:
1.命令greys.sh java进程号,这样就会在目标机器上启动了服务端口3568和一个greys客户端,如果你是在目标机器上操作的话,你可以直接给予目标机器的greys客户端进行操作了。 如果你没有目标机器的权限,但是你要协助解决问题的话可以执行命令./greys.sh 目标机器Id:3568,这样也可以启动一个greys客户端,这样你就可以进行各种操作了
2.假设我们有一个类和方法原型:com.mytest.MyGreysService::getGreyInfo(Long uid,String name)
2.1 a. 查看参数的命令: watch -b com.mytest.MyGreysService getGreyInfo params[0] 该命令可以输出第一个参数的值,也就是uid的值。
b. 查看调用了这个方法本身的对象的其他字段的值:
watch -b com.mytest.MyGreysService getGreyInfo target.redisTemplate
这个就是查看调用了getGreyInfo方法的实例的字段redisTemplate的值
c.查看某个方法的异常信息:
watch -e com.mytest.MyGreysService getGreyInfo throwExp.printStackTrace()

2.2 查看方法调用耗时的命令:
trace -n 3 com.mytest.MyGreysService getGreyInfo 该命令可以查看getGrayInfo方法直接调用的第一层方法的耗时

2.3. 查看具体方法的耗时的命令
ptrace -t -n 3 MyGreysService getGreyInfo --path=com.test*
该方法可以查看getGrayInfo直接和间接调用的方法的耗时,具体输出哪些方法的耗时是通过path路径限制的

2.4 查看并回放具体方法调用:
tt -i index
该方法结合ptrace可以查看具体方法的参数和耗时等信息
tt -i index -p
该方法结合ptrace可以重放具体方法的调用,这样就可以重放对应的方法,调试的时候非常方便

2.5 查看方法的统计信息,调用耗时,异常数量等
a. tt -t com.mytest.MyGreysService getGreyInfo params[1] == “test” 参数的具体值
b. tt -t com.mytest.MyGreysService getGreyInfo params.length== 5 参数的总个数
c. tt -t com.mytest.MyGreysService getGreyInfo params[1].length()==4 第二个字符串参数的长度

这个工具对于查找各种问题非常方便

greys官网地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值