Arthas-java程序运行时debug工具使用

 更新时间:2023年11月29日 15:08:55   作者:WhereIsMyChair  
这篇文章主要介绍了Arthas-java程序运行时debug工具使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Arthas-java程序运行时debug工具

前段时间在调一个线上缺陷,测试环境无法复现该问题,只有生产环境出现这个问题。

推测最可能原因

数据问题

生产环境数据量比测试环境大很多、生产环境某些数据出错。

此问题是导出excel表格的问题。

由于测试环境无法复现,只能在代码里可能的地方都加上输出标志,看看问题出在哪里。

由于代码涉及到很多方法,于是乎反反复复加了日志信息,然后又打包成jar文件放进生产里的classes里面重启服务,来来回回尝试了无数次终于定位到问题所在点了。

后来,我觉得这个办法实在太过笨拙,本来计算机能够完成能够检测得到的问题,居然用手工来寻找定位问题所在点,而这个过程极其耗时,却又必不可少,非常关键。

我在想能不能开发一个用于检测追踪程序运行过程中走过的路径这样的工具用于定位问题发生点呢。一直在想着,这样的开发应该不会很难。

不过,今天居然发现这样的工具已经被别人开发出来了,这就是------Arthas。

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  • 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  • 2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  • 5.是否有一个全局视角来查看系统的运行状况?
  • 6.有什么办法可以监控到JVM的实时运行状态?

Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java数据结构之实现哈希表的分离链接法

    Java数据结构之实现哈希表的分离链接法

    今天给大家带来的是关于Java数据结构的相关知识,文章围绕着Java哈希表的分离链接法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • spring使用redis操作key-value的示例代码

    spring使用redis操作key-value的示例代码

    这篇文章主要介绍了spring使用redis操作key-value的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Java中的ThreadLocalMap源码解读

    Java中的ThreadLocalMap源码解读

    这篇文章主要介绍了Java中的ThreadLocalMap源码解读,ThreadLocalMap是ThreadLocal的内部类,是一个key-value数据形式结构,也是ThreadLocal的核心,需要的朋友可以参考下
    2023-09-09
  • java 中file.encoding的设置详解

    java 中file.encoding的设置详解

    这篇文章主要介绍了java 中file.encoding的设置详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • JVM---jstack分析Java线程CPU占用,线程死锁的解决

    JVM---jstack分析Java线程CPU占用,线程死锁的解决

    这篇文章主要介绍了JVM---jstack分析Java线程CPU占用,线程死锁的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring @Valid和@Validated区别和用法实例

    Spring @Valid和@Validated区别和用法实例

    这篇文章主要介绍了Spring @Valid和@Validated区别和用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • redis 获取 list 中的所有元素操作

    redis 获取 list 中的所有元素操作

    这篇文章主要介绍了redis 获取 list 中的所有元素操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用Java实现串口通信

    使用Java实现串口通信

    这篇文章主要为大家详细介绍了使用Java实现串口通信的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Ribbon负载均衡服务调用的示例详解

    Ribbon负载均衡服务调用的示例详解

    Rbbo其实就是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,这篇文章主要介绍了Ribbon负载均衡服务调用案例代码,需要的朋友可以参考下
    2023-01-01
  • Java经典设计模式之适配器模式原理与用法详解

    Java经典设计模式之适配器模式原理与用法详解

    这篇文章主要介绍了Java经典设计模式之适配器模式,简单说明了适配器模式的概念、原理,并结合实例形式分析了java适配器模式的用法与相关注意事项,需要的朋友可以参考下
    2017-08-08

最新评论