BTrace原理浅析
之前在看agentzh的此篇博文动态追踪技术漫谈时,领会到了动态追踪技术的强大之处,也一直由于无法在不重启线上服务器的情况下排查线上问题在寻找Java中的动态追踪工具。在公司内部的JavaEE性能检测框架中,我们使用了asm做字节码注入来做线上性能的监测,沿着这个思路,如果要做到动态追踪应该是需要做字节码注入的,但是额外的一点是需要动态加载字节码替换掉原有的类的。此外,性能监测框架是需要耦合到业务应用中的,无法做到一个监测工具的灵活性。
后来听同事提到了BTrace这个工具,于是去尝试了一下。BTrace是SUN Kenai云计算开发平台下的一个开源项目,旨在为java提供安全可靠的动态跟踪分析工具。江南白衣的这篇文章http://calvin1978.blogcn.com/articles/btrace1.html做了比较详细的描述。
那么,BTrace这么神奇的功能是如何实现的呢?既然这是个开源的代码,那么直接从代码找原理。BTrace代码开源在https://github.com/btraceio/btrace。



