首页 > 其他分享 >debug技巧之使用Arthes调试

debug技巧之使用Arthes调试

时间:2024-05-22 16:29:44浏览次数:22  
标签:Arthes jar 命令 arthas debug 方法 调试

一、前言

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

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

二、Arthes是什么?

以下是Arthes官网原文:

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

官网地址如下:Arthes

三、怎么使用arthes?

1. 安装arthes

下载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)函数执行数据观测

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

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

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

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

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

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

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

(4)方法执行监控

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

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

四、小结一下

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

标签:Arthes,jar,命令,arthas,debug,方法,调试
From: https://www.cnblogs.com/wlovet/p/18206534

相关文章

  • 帆软——安装报表调试助手
    1.安装报表调试助手服务器-插件管理 搜索报表调试助手-安装 2.安装完成后,运行报表,在报表的右侧会出现SQL图标 3.查询后,点击图标查看对应的sql ......
  • ​一款开源的.NET程序集反编译、编辑和调试神器----dnSpyEx
    思维导航前言dnSpyEx主要功能工具源代码工具下载安装运行创建测试项目并编译成dll程序集使用工具调试程序集中的代码使用工具编辑程序集中的代码使用工具编辑程序集中的IL指令项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言说到.NET相关的反编......
  • 为什么 mov sp, 32,debug程序,执行sp=32的位置,后面的代码就全乱了(在小甲鱼零基础汇编第6
    assumecs:code,ds:data,ss:stackdatasegmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h;用来作存放数据dataendsstacksegmentdw0,0,0,0,0,0,0,0;用来作栈的空间stackendscodesegmentstart:;设置数......
  • 用charles反向代理来进行微信公众号的调试
     参考网站https://blog.csdn.net/qq_38179167/article/details/80654093 https://www.axihe.com/charles/charles/proxy-phone.html http://www.cnblogs.com/jiayuchn-test/p/8875105.html https://www.cnblogs.com/maxiaodan/p/10066345.html 下载charleshttps://......
  • CLON + QT + CMAKE debug 不打印 (控制台不输出)
    原因:CMAKE设置了WIN32_EXECUTABLETRUE这表示了要生成一个GUI程序,而且WindowsGUI会禁用控制台输出将set_target_properties(aaPROPERTIESWIN32_EXECUTABLETRUE)修改为set_target_properties(aaPROPERTIESWIN32_EXECUTABLEFALSE)或者手动创建控制台:`//未......
  • VUE,HbuilderX开发H5页面,配置调试,部署以及JWT,Token。调用本机netcore接口
    花了一周时间,测试了各种方式。对于VUE开发H5页面,然后部署到Nginx服务。再调用本地的HTTPS接口。1、本地开发及使用IE或Chrome进行开发调试,并调用本地接口同步开发。本地Netcore,开发按原有方式进行。Hbuilderx,开发并调用本地接口。设置时,不要使用Https进行。直接用http即可。Hbuild......
  • CMake 如何设置 Debug 和 Release 下的不同配置
    CMake设置Debug和Release的不同配置 文章目录CMake设置Debug和Release的不同配置I-原因II-如何设置2.1-配置不同的库2.2-配置不同的宏 I-原因由于Debug和Release下工程的依赖库不同,另外,方便定义不同的宏来隔离调试和发布的代码,如......
  • chrome的开发者工具中,单步调试script
    选择Sources标签在开发者工具中,点击顶部菜单中的“Sources”选项卡。注意:在切换到“Sources”选项卡后,默认是没有源码的,需要再次刷新下页面,才能看到对应的源码,才能设置断点。设置断点:在你想要暂停执行的代码行上,点击行号旁边的空白区域,这将在那一行上设置一个断点。常见......
  • vscode 无法调试 golang testify suite 中的单个 test 的解决办法
    目录问题描述网上的讨论最终的解决办法问题描述对于如下这样简单的测试文件:packagemain//Basicimportsimport( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite")varassertObj*assert.Assertions//Definethesuite,......
  • 解决VSCode中Debug和运行路径不一致的
    哈喽,大家好,我是木头左!背景介绍在VisualStudioCode(简称VSCode)中进行开发时,经常需要使用到调试(Debug)功能。然而,有时候会发现,当尝试调试程序时,程序的运行路径与预期不符。这通常会导致程序无法正确读取文件或访问资源,从而影响调试过程。为了解决这个问题,可以在launch.json文件......