背景
程序员在写好bug后为了让良心好受一点,调试是必不可少的一步。从eclipse到Idea,都有很多插件或快捷键能做到Hot Reload,但有的时候会失效,不得不重启。最近团队中的一个同学给大家推荐了一个新成员,带大家一面认识一下。
Arthas(阿尔萨斯)
Arthas出自阿里巴巴,最吸引我的点是打破了平时我们测试时都是从controller或写一个main方法来作为入口进行测试,它的入口可以是任意点,类似@Test右键指着某个方法即调试某个方法……
本篇主要介绍工作中我是如何运用该插件调试,关于Arthas详细的介绍,可以通过访问Arthas官网(http://arthas.gitee.io/)进行了解。
配置(以Idea为例)
下载jar包(https://arthas.aliyun.com/arthas-boot.jar),保存至你喜欢的目录
安装插件
创建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
*/
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext context;
public ApplicationContext getApplicationContext() {
return context;
}
public void setApplicationContext(ApplicationContext ctx) {
context = ctx;
}
}
配置插件获取content
使用
windows dos下启动
IDE里的Terminal中启动
调式
上述2种方式启动后,arthas启动会开启一个8563 的端口,通过在浏览器输入localhost:8653打开控制台或IDE即可进行调试,本次我在IDE中进行(上述步骤中的ii)
选择Service中的一个方法右键获取ognl表达式
粘贴ognl表达式到terminal执行调试
使用感受
多人协作,开发过程中A同学的定时任务你不想跑或A同学发到中间件的数据会因为你启动而被迫消费,这个时候有奇效
改了service中的某块代码,从controller到目标整个链路太长,相应要准备的条件就更多,这个时候有奇效
这是一个秘密:生产发生了一个问题,你想复现,可以直接连上去实战,但这个只能中午做
总结陈词
启动插件(java -jar jar_path)可以cmd到dos下启动,也可以在IDE里的Terminal中启动,然后选择对应的编号
本文只是入门级的让大家能快速上手,其实启动还可以不用这么麻烦,直接与Sping Boot集成,也可以通过配置关闭线上endpoint等等,总之,如果有可能,希望你能试一试,毕竟……
P.S:以上步骤没有成功,推荐大家一个更具体的参考地址:https://github.com/alibaba/arthas/issues/1823
因微信对于外链的管理,无法直接点击打开,有需要请复制一下,麻烦了!