04.BTrace 监控与调试

Jvm与调优 imooc JVM Markdown

BTrace可以动态地向目标应用程序的字节码注入追踪代码
BTrace 只能本地执行,不支持远程
BTrace 可以在生产环境下使用,但是被修改的字节码不会被还原
JavaComplierApi、JVMTI、Agent、Instrucmentation + ASM

BTrace安装

  • 下载BTrace:https://github.com/btraceio/btrace
  • 新建环境变量BTRACE_HOME
  • 添加Path:%BTRACE_HOME%\bin

两种运行脚本方式

  • 在JVisualVM中添加Btrace插件,添加classpath
  • 使用命令行btrace

拦截构造函数、同名函数

拦截方法

  • 普通方法: :@OnMethod(clazz="",method="")
  • 构造函数: : @OnMethod(clazz="",method="")
    tips: 构造函数在字节码层面就是init。
  • 拦截同名函数,用参数区分

拦截时机

kind.ENTRY : 入口,默认值
Kind.RETURN: 返回
Kind.THROE : 异常
Kind.Line  : 行

拦截this、参数、返回值

  • **this: ** @Self
  • 入参: 可以用AnyType,也可以用真实类型,同名的用真实的
  • 返回: @Return
  • 简单类型: 直接获取
  • 复杂类型: 反射,类名+属性名

其他应用

  • 打印行号: Kind.LINE
  • 打印堆栈: Threads.jstack()
  • 打印环境变量

你可能感兴趣的:(04.BTrace 监控与调试)