Performance Tuning -- 07 -- Btrace常用配置解析

原文链接:Performance Tuning – 07 – Btrace常用配置解析


相关文章:


Btrace (Byte Trace) 是 Sun 公司推出的一款 Java 动态、安全追踪 (监控) 工具,可以在不停机的情况下监控系统运行情况,并且做到最少的侵入,占用最少的系统资源,也就是说 Btrace 可以动态地向目标应用程序的字节码注入追踪代码

Btrace 脚本其实就是一个普通的 Java 类,只不过用 @Btrace 注解进行了修饰,一个 Btrace 脚本可以包含一个或多个拦截方法,需要注意的是,拦截方法必须用 public static void 进行修饰,否则启动 Btrace 脚本时会报错

此外,为了保证对目标程序不造成影响,Btrace 脚本对可执行动作做了诸多限制

  • 不能创建对象

  • 不能创建数组

  • 不能抛出异常

  • 不能捕捉异常

  • 不能调用任何实例方法或静态方法,只能调用 BTraceUtils 工具类中的静态方法

  • 不能分配给目标程序的类或对象的静态或实例字段,但可以分配给其自身的静态字段

  • 不能有实例字段和方法

  • 不能有外部类、内部类、嵌套类或本地类

  • 不能有同步块或同步方法

  • 不能有循环

  • 不能扩展任意类 (父类必须是 Object)

  • 不能实现接口

  • 不能包含断言语句

  • 不能使用类文字 (由一个类、接口、数组或原始类型的名称后面加上一个 “.class” 组成,如 String.class)


一、常用类注解

  • @Btrace

    • 用于表明该类是一个 Btrace 脚本

二、常用方法注解

  • @OnMethod

    • 用于指定方法中的目标类、目标方法和拦截位置

    • 当目标方法到达指定位置时,调用被修饰的方法

    • 参数说明

      参数含义
      clazz目标类
      method目标方法
      type目标方法签名,一般可以不声明,通常依靠 clazz 和 method 即可确定目标方法
      location拦截位置
    • 拦截位置 (Location) 说明

      参数含义
      Kind.ENTRY在入口进行拦截 (默认)
      Kind.RETURN在返回进行拦截
      Kind.THROW在抛出异常时进行拦截
      Kind.LINE在某一行进行拦截
  • @OnTimer

    • 用于指定每隔多少毫秒进行一次跟踪操作
  • @OnError

    • 用于当目标方法抛出异常或错误时进行跟踪操作

    • 当同一 Btrace 类中其他任何 BTrace 操作方法抛出异常时也会进行跟踪操作

  • @OnExit

    • 用于指定当 Btrace 代码调用 exit(int) 方法时进行跟踪操作
  • @Location

    • 用于指定目标方法的拦截位置

三、常用参数注解

  • @Self

    • 标记一个参数,用于保存 this
  • @Return

    • 标记一个参数,用于保存返回值
  • @ProbeClassName

    • 标记一个参数,用于保存目标类的类名
  • @ProbeMethodName

    • 标记一个参数,用于保存目标方法的方法名
  • @Duration

    • 标记一个参数,用于保存目标方法的持续时间
  • @TargetInstance

    • 标记一个参数,用于保存目标方法内部调用的实例
  • @TargetMethodOrField

    • 标记一个参数,用于保存目标方法内部调用的方法

四、常用字段注解

  • @TLS

    • 标记一个字段,用于指定该字段为线程本地字段

五、其他注解


六、注意事项

  • Btrace 脚本默认只能在本地运行

  • 生产环境下可以使用 Btrace 脚本,但是被修改后的字节码不会被还原


七、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值