你找Bug是直达还是中转?

文摘   职场   2022-06-17 17:00   广东  
  1. 背景

    程序员在写好bug后为了让良心好受一点,调试是必不可少的一步。从eclipse到Idea,都有很多插件或快捷键能做到Hot Reload,但有的时候会失效,不得不重启。最近团队中的一个同学给大家推荐了一个新成员,带大家一面认识一下。

  2. Arthas(阿尔萨斯)

    Arthas出自阿里巴巴,最吸引我的点是打破了平时我们测试时都是从controller或写一个main方法来作为入口进行测试,它的入口可以是任意点,类似@Test右键指着某个方法即调试某个方法……


    本篇主要介绍工作中我是如何运用该插件调试,关于Arthas详细的介绍,可以通过访问Arthas官网(http://arthas.gitee.io/)进行了解。


    1. 配置(以Idea为例)

      1. 下载jar包(https://arthas.aliyun.com/arthas-boot.jar),保存至你喜欢的目录


      2. 安装插件


      3. 创建Bean提供给arthas ognl 获取context的信息


        import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/**  * 下一步中要填写的配置信息:package_name+class_name   * @Description: 提供给Arthas ognl 获取context的信息 * @author: siri */@Componentpublic class ApplicationContextProvider implements ApplicationContextAware {    private static ApplicationContext context;
        public ApplicationContext getApplicationContext() { return context; }
        @Override public void setApplicationContext(ApplicationContext ctx) { context = ctx; }}
      4. 配置插件获取content


    2. 使用

    3. 启动插件(java -jar jar_path)可以cmd到dos下启动,也可以在IDE里的Terminal中启动,然后选择对应的编号


      1. windows dos下启动



      2. IDE里的Terminal中启动



      3. 调式

        上述2种方式启动后,arthas启动会开启一个8563 的端口,通过在浏览器输入localhost:8653打开控制台或IDE即可进行调试,本次我在IDE中进行(上述步骤中的ii)



      4. 选择Service中的一个方法右键取ognl表达式


      5. 粘贴ognl表达式到terminal执行调试



  3. 使用感受

    1. 多人协作,开发过程中A同学的定时任务你不想跑或A同学发到中间件的数据会因为你启动而被迫消费,这个时候有奇效

    2. 改了service中的某块代码,从controller到目标整个链路太长,相应要准备的条件就更多,这个时候有奇效

    3. 这是一个秘密:生产发生了一个问题,你想复现,可以直接连上去实战,但这个只能中午做


  4. 总结陈词

  5. 本文只是入门级的让大家能快速上手,其实启动还可以不用这么麻烦,直接与Sping Boot集成,也可以通过配置关闭线上endpoint等等,总之,如果有可能,希望你能试一试,毕竟……


P.S:以上步骤没有成功,推荐大家一个更具体的参考地址:https://github.com/alibaba/arthas/issues/1823

因微信对于外链的管理,无法直接点击打开,有需要请复制一下,麻烦了!

晚霞程序员
一位需要不断学习的30+程序员……