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高级,中间会穿插面试题和项目实战,希望能给大家带来帮助
    2022-03-03
  • SpringMVC 跨重定向请求传递数据的方法实现

    SpringMVC 跨重定向请求传递数据的方法实现

    这篇文章主要介绍了SpringMVC 跨重定向请求传递数据的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 详解springboot集成websocket的两种实现方式

    详解springboot集成websocket的两种实现方式

    这篇文章主要介绍了springboot集成websocket的两种实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Spring bean 加载执行顺序实例解析

    Spring bean 加载执行顺序实例解析

    这篇文章主要介绍了Spring bean 加载执行顺序实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Intellij Idea中进行Mybatis逆向工程的实现

    Intellij Idea中进行Mybatis逆向工程的实现

    这篇文章主要介绍了Intellij Idea中进行Mybatis逆向工程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • servlet重定向详解(八)

    servlet重定向详解(八)

    这篇文章主要为大家详细介绍了servlet重定向的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 解析Java的Jackson库中对象的序列化与数据泛型绑定

    解析Java的Jackson库中对象的序列化与数据泛型绑定

    这篇文章主要介绍了解析Java的Jackson库中对象的序列化与数据泛型绑定,Jackson通常被用来实现Java对象和JSON数据的相互转换功能,需要的朋友可以参考下
    2016-01-01
  • Java 导出excel进行换行的案例

    Java 导出excel进行换行的案例

    这篇文章主要介绍了Java 导出excel进行换行的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java利用剪贴板实现交换程序间数据的方法

    Java利用剪贴板实现交换程序间数据的方法

    这篇文章主要介绍了Java利用剪贴板实现交换程序间数据的方法,需要的朋友可以参考下
    2014-07-07
  • Java中equals和==的区别详解

    Java中equals和==的区别详解

    这篇文章主要介绍了详解 Java 中 equals 和 == 的区别的相关资料,equals 和 == 都是用来检测两个字符串是否相等,返回值也都是布尔型,但是两者在内部比较的处理中却不尽相同需要的朋友可以参考下
    2021-09-09

最新评论