• Arthas(Java诊断工具)



    官方文档:https://arthas.aliyun.com/doc/quick-start.html#demo

    一、快速开始

    watch(方法执行数据观测)
    watch 类全路径 方法名 returnObj        观察方法返回结果
    watch demo.MathGame primeFactors "{params,returnObj}" -x 2 观察方法出参和返回值, -x 2为打印结果深度,默认为1;
    watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0" 观察第一个参数params[0]<0时的实例
    watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200'  观察耗时大于200ms的情况
    watch demo.MathGame primeFactors 'target.illegalArgumentCount'      观察当前对象的某个属性
    watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2 获取类的静态字段、调用类的静态方法

    其他参数还有:

    -b      在方法执行前
    -e      方法异常后
    -s      方法返回后
    -f      在方法结束之后(正常返回和异常返回)观察,默认开启
    -v      打印更多信息

    "{params,returnObj}"是观察表达式,可选的参数有:

    loader         本次调用类所在的 ClassLoader
    clazz          本次调用类的 Class 引用
    method         本次调用方法反射引用
    target         本次调用类的实例
    params         本次调用参数列表,这是一个数组,如果方法是无参方法则为空数组
    returnObj      本次调用返回的对象。当且仅当 isReturn==true 成立时候有效,表明方法调用是以正常返回的方式结束。如果当前方法无返回值 void,则值为 null
    throwExp       本次调用抛出的异常。当且仅当 isThrow==true 成立时有效,表明方法调用是以抛出异常的方式结束。
    isBefore       辅助判断标记,当前的通知节点有可能是在方法一开始就通知,此时 isBefore==true 成立,同时 isThrow==false 和 isReturn==false,因为在方法刚开始时,还无法确定方法调用将会如何结束。
    isThrow        辅助判断标记,当前的方法调用以抛异常的形式结束。
    isReturn       辅助判断标记,当前的方法调用以正常返回的形式结束。

    二、命令参考

    monitor         方法执行监控,数据统计用
    watch           方法执行数据观测
    trace           方法内部调用路径,并输出方法路径上的每个节点上耗时
    stack           输出当前方法被调用的调用路径
    tt              方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
    help            查看所有命令
    dashboard       展示当前进程的信息
    thread 1        获取线程信息,1通常是main函数
    jad 类全路径     反编译类

    基础命令

    help        查看命令帮助信息
    cat         打印文件内容,和linux里的cat命令类似
    echo        打印参数,和linux里的echo命令类似
    grep        匹配查找,和linux里的grep命令类似
    base64      base64编码转换,和linux里的base64命令类似
    tee         复制标准输入到标准输出和指定的文件,和linux里的tee命令类似
    pwd         返回当前的工作目录,和linux命令类似
    cls         清空当前屏幕区域
    session     查看当前会话的信息
    reset       重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
    version     输出当前目标 Java 进程所加载的 Arthas 版本号
    history     打印命令历史
    quit        退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
    stop        关闭 Arthas 服务端,所有 Arthas 客户端全部退出
    keymap      Arthas快捷键列表及自定义快捷键
    options     查看或设置Arthas全局开关

    class/classloader相关

    sc          查看JVM已加载的类信息,参数*则为所有,可以有前缀
    sm          查看已加载类的方法信息
    mc          内存编译器,内存编译.java文件为.class文件
    retransform 加载外部的.class文件,retransform到JVM里
    redefine    加载外部的.class文件,redefine到JVM里
    dump        dump 已加载类的 byte code 到特定目录
    classloader 查看classloader的继承树,urls,类加载信息,使用classloader去getResource

    jvm相关

    dashboard       当前系统的实时数据面板
    thread          查看当前 JVM 的线程堆栈信息
    jvm             查看当前 JVM 的信息
    sysprop         查看和修改JVM的系统属性
    sysenv          查看JVM的环境变量
    vmoption        查看和修改JVM里诊断相关的option
    perfcounter     查看当前 JVM 的Perf Counter信息
    logger          查看和修改logger
    getstatic       查看类的静态属性
    ognl            执行ognl表达式
    mbean           查看 Mbean 的信息
    heapdump        dump java heap, 类似jmap命令的heap dump功能
  • 相关阅读:
    【二十五】cookie与session学习总结
    【二十四】使用mysqli扩展类批量执行多条sql语句
    【二十三】php之预定义超全局变量
    【二十二】mysqli事务处理与预处理总结
    【二十一】基于mysqli的表格数据练习
    【二十】mysqli基于面向过程与面向对象的编程
    为什么所有浏览器的userAgent都带Mozilla
    如何快速的搜索自己想要的资料
    从汇编看c++成员函数指针(三)
    从汇编看c++中指向成员变量的指针(二)
  • 原文地址:https://www.cnblogs.com/aland-1415/p/14362731.html
Copyright © 2020-2023  润新知