Btrace使用

1. Btrance简介

1.1 概述

在周志明老师的深入理解JVM虚拟机一书中,周老师这样描述Btrance:在不停止目标程序运行的情况下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。从这段话,我们可以得到以下信息:1.使用Btrace可以在不停止程序的情况下进行调试。2.应用于HotSpot虚拟机,如果是其他虚拟机,是不能用的。

  • BTrace可以动态地向目标应用程序的字节码注入追踪代码;
  • 用到的技术:JavaComplier JVMTI Agent Instrumentation + ASM;
  • 默认只能本地运行,就是只能调试本地的Java进程;
  • 生产环境下可以使用,但是被修改的字节码不会被还原;

1.1.1 安装方法

项目地址

  • 配置坏境变量BTRACE_HOME;
  • 配置Path,添加%BTRACE_HOME%bin;

1.1.2 两种运行脚本方式

  • 在JVisualVM中添加Btrace插件,添加classpath
  • 使用命令行btrace
  • 注意BTrace脚本的项目要引入btrace-agent.jar,btrace-boot.jar,btrace-client.jar这3个依赖;

1.2 BTrace实战

1.2.1 拦截参数

1.2.2 拦截有复杂参数的方法

1.2.3 拦截构造方法

1.2.4 检查某行是否执行

1.2.5 打印异常信息

1.2.6 捕获方法返回值

你可能感兴趣的:(java)