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

BTrace总结

2012-11-23 
BTrace小结之前很早有同事分享过Btrace的原理,基于java?Instruction?实现的,方便跟踪代码。对于线上应用,我

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、?其他方法上的注解、

  • OnError?当trace代码抛异常时该注解的方法会被执行.?如果同一个trace脚本中其他方法抛异常,?该注解方法也会被执行.

  • OnExit?当trace方法调用内置exit(int)方法(用来结束整个trace程序)时,?该注解的方法会被执行.?参考自带例子ProbeExit.java.

  • OnEvent?用来截获"外部"btrace?client触发的事件,?比如按Ctrl-C?中断btrace执行时将执行使用了该注解的方法,?该注解的value值为具体事件名称.?

  • OnLowMemory?当内存超过某个设定值将触发该注解的方法,?具体参考MemAlerter.java

    D、参数上的注解:Self?用来指定被trace方法的this

    E、参数上的注解:Return?用来指定被trace方法的返回值

    F、参数上的注解:ProbeClassName?和ProbeMethodName??被trace的类名称和方法名称

    G、参数:.TargetInstance?(since?1.1)?用来指定被trace方法内部被调用到的实例

    H、参数:TargetMethodOrField?(since?1.1)?用来指定被trace方法内部被调用的方法名,?可参考例子AllCalls1.java?合?AllCalls2.java

    I、属性上的注解:TLS?将一个脚本变量与一个ThreadLocal变量关联

    ?

    常用的几种脚本

    A、查看一个方法的入参和返回值

    B、查看一个方法执行耗时

    C、谁调用这个方法

    D、代码中的特定行有没有被调用

    ?

    下面转自毕玄的博客:http://rdc.taobao.com/team/jm/archives/509

    如一段这样的代码:

    }

    ?

    ?

    参考:

    http://rdc.taobao.com/team/jm/archives/509

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

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

    ?

    ?

    ?

热点排行