读书人

BTrace总结

发布时间: 2012-11-23 22:54:33 作者: rapoo

BTrace小结

之前很早有同事分享过Btrace的原理,基于java?Instruction?实现的,方便跟踪代码。对于线上应用,我们不能进行debug来获取运行的详细信息,通过BTrace可以搞定一些问题。Btrace使用到的技术主要有

?Java?Compiler?API?Annotation?Processing?Java?Agent?ASM?4?Attach?API?jvmstat

?JMX

术语主要有三个:

Probe?Point?:在何处执行trace语句,?这里的"何处"可以是具体的跟踪地点和执行事件,?在BTrace中通过各种注解来指定?
Trace?Actions?or?Actions:在何时执行trace语句?
Action?Methods?:定义在trace脚本中的trace语句,?具体来说就是脚本中的无返回值静态方法(1.2之后可以是非静态方法)

使用BTrace

(1)下载BTrace的工程代码

mkdir?/home/admin/btrace

cd?/home/admin/btrace

wget??http://kenai.com/downloads/btrace/releases/release-1.2.2/btrace-bin.tar.gz?

tar?-xzvf??/home/admin/btrace/btrace-bin.tar.gz

export?JAVA_HOME=/java

(2)编写自定义的BTrace脚本(java文件)

常用的几个注解

A、方法上的注解OnMethod

clazz:?类名称,可以是全称,也可以是正则表达式(也可以是正则表达式(表达式必须写在"//"中,?比如"/java\\.awt\\..+/").)

例如:?clazz="+java.lang.ClassLoader"--》实现ClassLoader接口的类;

method:方法名称,

location:例如location=@Location(Kind.RETURN)是一个枚举值

例如:

?@OnMethod(

????????clazz="/java\\.io\\..*Input.*/",

????????method="/read.*/"

????)

B?、方法上的注解OnTimer?用来指定时长(ms)执行一次trace.?时长通过"value"属性指定。例如???@OnTimer(4000)?

C、?其他方法上的注解、

读书人网 >互联网

热点推荐