首页 > 其他分享 >Arthas 全攻略:让调试变得简单

Arthas 全攻略:让调试变得简单

时间:2024-09-24 12:22:33浏览次数:3  
标签:Java Arthas 全攻略 问题 线程 JVM arthas 调试


Arthas 全攻略:让调试变得简单_arthas


文章目录

  • 一、简介
  • 二、命令列表


一、简介

Arthas 全攻略:让调试变得简单_Arthas_02


Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

注意
我安装的版本是:Arthas V3.7.2

背景

通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。

开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。

如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。

Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启,无需代码更改。 Arthas 作为观察者永远不会暂停正在运行的线程。

Arthas(阿尔萨斯)能为你做什么?

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

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

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

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

核心作用是什么?

Alibaba开源的Java诊断工具。

从 arthas-boot 开始,它的核心作用就是启动引导用户选择需要增强的Java进程PID,最终将PID传入 arthas-core 中;

arthas-core根据用户选择的PID,利用Java Agent机制使用 arthas-agent 对目标进程进行增强;arthas-agent被唤醒后,就会启动命令行服务器监听命令,并匹配对应的命令处理器(XxxCommand)对用户命令进行处理,并返回。

Arthas 全攻略:让调试变得简单_调试_03

二、命令列表

  • jvm相关命令
  • dashboard(当前系统的实时数据面板)
  • thread(查看当前JVM的线程堆栈信息)
  • Arthas jvm(查看当前JVM的信息)
  • Arthas sysprop(查看和修改JVM的系统属性)
  • 等待补充...
  • class/classloader相关命令
  • monitor/watch/trace/stack/tt 相关
  • profiler


标签:Java,Arthas,全攻略,问题,线程,JVM,arthas,调试
From: https://blog.51cto.com/u_15896157/12098423

相关文章

  • “救心来了”项目硬件系统搭建(三)——调试具体内容
    ArduinoArduino要接很多线,小心别搞混,有些线很松的,就换一根吧。用到中断,要是改的话,注意哪些口可以用作中断,哪些不可以。GPS模块单个模块调试可以先接usb转ttl来测试,波特率9600.模块冷启动需要28s,热启动需要3s。启动后是要等半分钟左右看看有没有信号。常亮,表示模块已开始......
  • 基于SpringBoot考研资讯管理系统的设计和实现(源码+LW+调试文档)
     目录:完整视频演示:系统架构:程序运行截图:核心代码参考:   数据库sql:项目技术介绍:java介绍:Mysql数据库介绍:为什么选择我:获取源码:......
  • 基于SpringBoot医疗管理系统的设计和实现(源码+LW+调试文档)
     目录:完整视频演示:系统架构:程序运行截图:核心代码参考:   数据库sql:项目技术介绍:java介绍:Mysql数据库介绍:为什么选择我:获取源码:......
  • Springboot基于疫情背景下的新型点餐送餐系统bpe1s--(程序+源码+数据库+调试部署+开发
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景在全球新冠疫情持续蔓延的背景下,传统餐饮行业面临巨大挑战,限制人员聚集成为常态。传统电话点餐和到店就餐方式不仅效率低下,还增加了病......
  • Springboot基于协同过滤算法的电影推荐系统56rs8程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,电影类型,电影信息,网站资讯,资讯类型开题报告内容一、研究背景与意义随着互联网技术的飞速发展,电影资源日益丰富,用户面临的选择也愈发多样化。......
  • Springboot技术安家租房平台系统设计与实现7i2eb(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:房东,用户,房屋类型,房源信息,房屋租赁,房屋评价开题报告内容一、研究背景随着城市化进程的加速和人口流动的增加,租房市场日益活跃,但传统租房方式存在......
  • Javascript调试命令——你只会Console.log() ?
    Javascript调试命令——你只会Console.log()?https://segmentfault.com/a/1190000012957199Console对象提供对浏览器控制台的接入(如:Firefox的WebConsole)。不同浏览器上它的工作方式是不一样的,但这里会介绍一些大都会提供的接口特性。Console对象可以在任何全局对象中访问,......
  • PY32 link仿真器,支持PY32系列ARM-Cortex内核单片机的调试烧录
    PY32系列32位单片机基于Arm®Cortex®-M处理器,包括M0+和M4系列产品。集高性能、实时操作、数字信号处理、低功耗性能、高性价比等特性于一身,同时还保持了系统简单、易于开发的特点,符合消费市场的基本设计需求,受到广大开发者的喜爱。PY32系列单片机适用于消费类、工业类,数字控制等......
  • 【unity开发】以OPPO手机为例,如何连接安卓设备并调试unity程序
    1.有线调试下面全程以oppo手机为例:1.打开手机开发者模式设置->关于手机->版本信息->狂点版本号直到弹出提示打开开发者模式即可2.打开USB调试打开开发者模式之后在设置->其他设置->开发者选项->USB调试打开即可3.USB数据线连接使用USB数据线连接你的手机和电脑,并确保USB......
  • python ssh arthas
    #!/bin/bashARTHAS_FILE="arthas-boot.jar"#检查arthas-boot.jar文件是否存在if[!-f"$ARTHAS_FILE"];thenecho"错误:未找到arthas-boot.jar文件,请确保该文件在当前目录中。"exit1fi#获取当前正在运行的Java进程echo"检测正在运行的Java进程......