debug技巧之使用arthas调试

一、前言

大家好啊,我是summo,今天给大家分享一下我平时是怎么调试代码的,不是权威也不是教学,就是简单分享一下,如果大家还有更好的调试方式也可以多多交流哦。

前面我介绍了本地调试和远程调试,今天再加一种:利用arthas进行调试。

二、arthas是什么?

以下是arthas官网原文:

通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。
开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。
如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。
Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启,无需代码更改。 Arthas 作为观察者永远不会暂停正在运行的线程。

官网地址如下:arthas

三、怎么使用arthas?

1. 安装arthas

下载arthas-boot.jar,然后用java -jar的方式启动:

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

启动之后,如下

它这里会将正在运行的Java进程打印出来,我们输入"1"按下"enter"就可以进入调试界面了

2. 一些基础命令

(1)反编译java类

命令格式:jad 包路径+类名

这个命令可以将线上的class文件反编译回来,保证线下线上的代码是同一套。

(2)函数执行数据观测

生成这个指令arthas有自己的一套规则,但是自己去拼实在是太麻烦了。下面介绍一个IDEA插件,如果你的开发工具是idea,那么可以去插件市场搜索arthas,非常方便。

安装之后,打开编辑器,选中方法名,右键打开工具条

这样就会生成一条监测命令,粘贴到刚才的arthas控制台即可,调用一下该方法,就可以看到出入参数了,非常的便捷好用。

watch指令我使用的最多,多用于调试功能,用来看入参和出参。

(3)方法内部调用路径,并输出方法路径上的每个节点上耗时

使用idea插件生成方法的trace命令,贴到arthas控制台,如下:

trace命令可以用来排查错误发生在哪一行,或者在优化代码的时候分析哪些方法耗时多。

(4)方法执行监控

monitor命令一般用于统计方法的平均耗时。

还有很多其他指令我就不当官网文档的搬运工了,感兴趣可以去官网看。

四、小结一下

这个组件是免费开源的,真的非常好用,在排查线上BUG的时候,我会先尝试使用arthas进行排查,如果实在是排查不出来,再使用远程调试。

  • 51
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在生产环境中使用Arthas时,需要注意一些安全性和稳定性的考虑。下面是一些建议: 1. 预先规划:在使用Arthas之前,应该提前规划好其使用场景和目标,并确保只有授权的人员能够访问和使用Arthas。 2. 安全配置:为了保护Arthas的安全性,可以采取以下措施: - 限制Arthas的远程访问,只允许特定IP或特定用户进行远程连接。 - 设置Arthas的访问密码,以防止未授权的人员使用。 - 定期更新Arthas版本,以获取最新的安全修复和功能改进。 3. 功能限制:在生产环境中,建议限制Arthas使用功能,只开放必要的功能给运维人员使用。避免过多地修改和调试生产系统。 4. 调试风险:在生产环境中进行调试操作可能会带来一定的风险。因此,需要谨慎使用Arthas调试功能,并确保在调试过程中不会对生产系统造成影响。 5. 日志记录:在使用Arthas时,建议记录相关操作和输出结果,以便后续审计和故障排查。 6. 定期审查:定期审查Arthas使用情况,包括访问日志、操作记录等,以确保其正常和安全使用。 此外,为了确保生产环境的稳定性和安全性,请在生产环境中使用Arthas之前先在非生产环境进行充分的测试和评估。并建议事先备份重要的数据和代码,以防止意外的问题发生。 总之,使用Arthas需要谨慎并遵循最佳实践,确保其在生产环境中的合理和安全的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sum墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值