Btrace使用说明
来源:互联网 发布:站长工具端口 编辑:程序博客网 时间:2024/05/01 05:48
引言:Btrace是一个非常奇特的工具,非侵入式的工具,可以监控程序中发生的运行状态,本文将介绍如何使用Btrace来完成监控工具。
1. Btrace
BTrace 是一个可靠的,用来动态跟踪Java程序的工具。它通过动态对运行中的Java程序进行字节码生成来工作。BTrace会对运行中的Java程序的类插入一些跟踪操作 来对被跟踪的程序进行热替换。
BTrace应用较为广泛的原因应该是其安全性和无侵入性,已经热交互技术,使得我们无需启动Agent的情况下动态跟踪分析,其安全性不会导致对目标Java进程的任何破坏性影响,使得BTrace成为我们线上产品问题定位的利器。无侵入性无需我们对原有代码做任何修改,降低上线风险和测试成本,并且无需重启启动目标Java进程进行Agent加载即可动态分析和跟踪目标程序,可以说BTrace可以满足大部分的应用场景。
项目主页: https://kenai.com/projects/btrace
2. Btrace示例
Btrace的监控代码如下:
import static com.sun.btrace.BTraceUtils.str;import static com.sun.btrace.BTraceUtils.strcat;import static com.sun.btrace.BTraceUtils.print;import static com.sun.btrace.BTraceUtils.println;import static com.sun.btrace.BTraceUtils.timeMillis;import com.sun.btrace.AnyType;import com.sun.btrace.BTraceUtils.Time;import com.sun.btrace.annotations.BTrace;import com.sun.btrace.annotations.Kind;import com.sun.btrace.annotations.Location;import com.sun.btrace.annotations.OnMethod;import com.sun.btrace.annotations.ProbeClassName;import com.sun.btrace.annotations.ProbeMethodName;import com.sun.btrace.annotations.TLS;@BTracepublic class BTraceMethod { @TLS private static long startTime; @OnMethod(clazz="/com.rain.wx.meal.*/", method="/.*/", location=@Location(Kind.ENTRY)) public static void startMethod() { startTime = timeMillis(); } @OnMethod(clazz="/com.rain.wx.meal.*/", method="/.*/", location=@Location(Kind.RETURN)) public static void endMethod(@ProbeClassName String clazz,@ProbeMethodName String method) { print(strcat(strcat(clazz ,"."), method)); print("["); print(strcat("Time takes ", str(timeMillis() - startTime))); println("]"); }}这里做个说明,Btrace里面的类库都是内置的,无法使用jdk中自带的类库和工具类,这个需要格外注意,遵守java的语法,但是只能使用Btrace自带的类库和工具类。
从这里的代码中,我们可以发现其中是基于模式来进行匹配的,匹配class和类中的方法,在这个方法体中,打印出各个方法输出的执行时间差。
我们进入JDK目录,然后点击jvisualvm,在plugins中安装btrace插件,在安装完成之后,启动调试工具:
点击运行程序,然后监控运行信息输出:
3. Btrace内容的详述
关于Btrace的内容,在下面这篇文章已经有了很详细的介绍,这里就不在赘述了。
Btrace基本资料的参考资料: http://blog.csdn.net/mgoann/article/details/7268508
另外大家也可以参考官网的参考资料。
4. 参考资料
- http://www.cnblogs.com/serendipity/archive/2012/05/14/2499840.html
- http://linmingren2003.blog.163.com/blog/static/56751003201121871725139/
- http://blog.csdn.net/mgoann/article/details/7268657
- Btrace使用说明
- BTrace
- Btrace
- BTrace
- btrace
- btrace
- btrace
- 线上排查工具btrace和jvm-inspector使用说明
- Btrace使用
- 看一看btrace
- btrace 用户手册
- BTrace使用
- BTrace 指南
- BTrace 分享
- btrace exercise
- java btrace
- Btrace用法
- BTrace简介
- Linux设备文件简介
- 1. Two Sum--2016/09/18
- WebStorm 注册码
- java 多线程
- 第一节 设计一个项目需求,灌入一万数据先
- Btrace使用说明
- 实战吾爱论坛160个crackme——(1)堆栈回溯法
- 文章标题
- jsp注释和声明
- apt-get: command not found
- “XML Parser Error on line 1: 前言中不允许有内容。”问题解决方法
- 修改文件 访问(access)、修改(modify)、改变(change)时间
- 文章标题
- 当表单中中只有一个文本框类型的的input