美文网首页
Arthas深入使用

Arthas深入使用

作者: 疯狂的冰块 | 来源:发表于2020-02-18 22:18 被阅读0次

[TOC]

arthas有一下几个默认对象:

params 参数
target 当前对象
returnObj 返回值
throwExp 异常

调用具体时间

 -b(调用前)、 -e(异常时)、-s(返回后)、-f(结束后)

通用参数

-n 限制打印的条数,如程序执行中,可能有些方法会疯狂打印。
-i 设置打印间隔时间,单位毫秒
-x 属性遍历深度,默认为1。

1、tt 命令详细使用

过滤制定参数
tt -t *UserLoanBiz getOvdRecordCnt 'params[0].toString()=="386134842398343168"'

修改第一个参数,然后调用实例的getIContracts方法
tt -i 1101 -w "#a=params[0].setLimit(1),target.getIContracts(#a)"

2、获取系统bean

2.1

通过spring mvc 获取bean

tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod
# 之后通过如下命令来获取具具体bean
tt -i 1000 -w 'target.getApplicationContext().getBean("YourBeanName").fun()'

2.2

自定义类获取Spring ApplicationContent
想办法拿到项目中 ApplicationContext 对象。ognl只获取静态属性,所以我们一般需要查找项目中是否存在静态的ApplicationContext对象。

这里面我就自己创建了一个类来提供静态的ApplicationContext。

public class BeanFactory implements ApplicationContextAware, DisposableBean {
    private static ApplicationContext ctx;
    private static BeanFactory singleton = new BeanFactory();
 
    private BeanFactory() {
    }
 
    public static BeanFactory getInstance() {
        return singleton;
    }
 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ctx = applicationContext;
    }
 
    public void destroy() throws Exception {
        ctx = null;
    }
 
    public static <T> T getBean(String name) {
        return ctx.getBean(name);
    }
 
    public static <T> T getBean(Class<T> clazz) {
        return clazz.cast(BeanFactoryUtils.beanOfTypeIncludingAncestors(ctx, clazz));
    }
}

然后通过如下的命令获取任务想要的bean,simpleMockContainer为你想要获取的bean名称

ognl '@com.xxx.admin.utils.BeanFactory@ctx.getBean("simpleMockContainer")' -x 2

参考

Alibaba Arthas实践--获取到Spring Context,然后为所欲为

使用Arthas 获取Spring ApplicationContext还原问题现场

相关文章

  • Arthas深入使用

    [TOC] arthas有一下几个默认对象: 调用具体时间 通用参数 1、tt 命令详细使用 2、获取系统bean...

  • 如何使用Arthas提高日常开发效率?

    Arthas有什么功能,怎么用,请看:Arthas使用手册[https://arthas.aliyun.com/d...

  • Arthas-Java排查神器使用

    推荐使用arthas-boot.jar方式 1、下载及安装 arthas-boot是Arthas的启动程序,它启动...

  • arthas源码分析

    arthas简介 arthas 是Alibaba开源的Java诊断工具,基于jvm Agent方式,使用Instr...

  • 排查线上CPU飙高

    1、本案例的排查过程使用的阿里开源的Arthas工具进行的,不使用arthas,使用JDK自带的命令也是可以。 2...

  • 超好用的自带火焰图的 Java 性能分析工具 Async-pro

    最近 Arthas 性能分析工具上线了火焰图分析功能,Arthas 使用 async-profiler 生成 C...

  • Arthas使用

    下载arthas-boot.jar: 然后用java -jar的方式启动: 选择一个pid进入(如1): 通过th...

  • Arthas使用

    1、写作背景 在此记录,以备遗忘 2、核心操作 2.1、Arthas安装 linux安装 wget https:/...

  • Arthas使用

    Authas — 开源的java诊断工具 下载安装 authas是一个jar包,可以直接下载后运行 就可以启动起来...

  • Arthas使用

    1.代码热修复:jad --source-only com.test.demo.dmp.constant.DmpC...

网友评论

      本文标题:Arthas深入使用

      本文链接:https://www.haomeiwen.com/subject/dannfhtx.html