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