前言
在《说说Java单元测试》文章中,强调了单元测试的重要性,也提倡大家一定要写单元测试,能帮我们筛选掉很多低级错误,找出一些没必要的bug,避免生产事故。单元测试通过后,我们开始集成,随着服务集成的日渐增多,业务逻辑也变得越来越复杂,在这样的前提下,解决bug就变得异常复杂。在本地环境中,我们可以通过日志分析 + debug的方式,进行排查解决,再不济,我们还可以开启远程调试进行解决。但当生产系统上出现了bug时,我们可不能开启远程调试,这样会造成线程阻塞,足以让生产系统爆炸的。那么,我们该怎么办呢?代码执行到哪一行了?我们两眼一抹黑,不知从何下手,真是一个悲伤的故事。当然了,我们也可以通过修改代码的方式新增日志,打印方法的入参,出参,上线,重启 … 直至问题得以解决。办法虽然原始,好在能解决问题,但其过程非常痛苦,让人精疲力尽,有很多朋友估计都有过这样的经历。现在回过头来想,如果有这么一个工具,在不修改代码,不重启应用,不上线的前提下,就能查看到代码执行到哪一行,查看某个方法的出参,入参,查看方法的耗时,是该有多好。今天要介绍的就是这么一个工具 - BTrace ( Github主页:https://github.com/btraceio/btrace)