首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

BTrace应用

2012-07-05 
BTrace使用参考:http://kenwublog.com/btrace-theory-analysis???????? http://blog.bluedavy.com/?p185?

BTrace使用

参考:http://kenwublog.com/btrace-theory-analysis

???????? http://blog.bluedavy.com/?p=185

???????? http://www.iteye.com/topic/652653

???????? http://macrochen.iteye.com/blog/838920

???????? http://kenai.com/projects/btrace/pages/UserGuide

更详细的使用参看btrace的javadoc

?

从http://kenai.com/projects/btrace/下载BTrace,并配好PATH环境变量。

定制自己需要的btrace脚本。
jps命令查出需要监控的jvm pid。

使用方法:

?? btrace -cp [监控程序的class路径] [pid] [需要运行的btrace代码]

?

import com.sun.btrace.annotations.*;import static com.sun.btrace.BTraceUtils.*;@BTracepublic class HelloWorld {    @OnMethod(        clazz="java.lang.Thread",        method="start"    )    public static void func() {        println("about to start a thread!");    }}

?

@BTrace 说明是Btrace程序

@OnMethod告诉Btrace解析引擎需要代理的类和方法。

这个例子的作用是当java.lang.Thread类的任意一个对象调用 start 方法后,会调用 func 方法,默认是一进入start()就执行func(),可通过在OnMethod修改location属性改变方法的执行位置,利用这点可以计算btrace方法的计算时间。

在上面那个例子中,Java.lang.Thread 这个类的字节码被重写了。并在start方法体尾部植入了 func 方法的调用。

?

BTrace的神通仅仅局限于只读操作。不仅强制要求java脚本需要提供public static方法.而且,脚本里无法实例化对象,数组,不能抛异常或捕捉,不能有循环,内部类等等。针对一些特殊对象,BTrace也是无能为力的。比如java.lang.Integer,Array等。

热点排行