btrace入门

简介

Btrace是这样一个工具,它可以在不修改原有代码的情况下动态地追踪java运行程序,通过hotswap技术,动态将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计。

在下列情况时可以使用BTrace进行分析:

1、接口性能变慢,分析每个方法的耗时情况;

2、当在Map中插入大量数据,分析其扩容情况;

3、分析哪个方法调用了System.gc(),调用栈如何;

4、执行某个方法抛出异常时,分析运行时参数;

5、…

1.install

#github:https://github.com/btraceio/btrace/releases/tag/v1.3.11
wget https://github.com/btraceio/btrace/releases/download/v1.3.11/btrace-bin-1.3.11.zip
#解压,设置环境变量BTRACE_HOME

也可以在visualVM中安装btrace插件

2.script

引入三个jar包

 <dependency>
            <groupId>com.sun.btrace</groupId>
            <artifactId>btrace-agent</artifactId>
            <version>1.3.11</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>D:\Program1024\KIT\btrace1311\build\btrace-agent.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.sun.btrace</groupId>
            <artifactId>btrace-boot</artifactId>
            <version>1.3.11</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>D:\Program1024\KIT\btrace1311\build\btrace-boot.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.sun.btrace</groupId>
            <artifactId>btrace-client</artifactId>
            <version>1.3.11</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>D:\Program1024\KIT\btrace1311\build\btrace-client.jar</systemPath>
        </dependency>

编写一个简单脚本

package com.imooc.monitor_tuning.chapter4;

import com.sun.btrace.AnyType;
import com.sun.btrace.BTraceUtils;
import com.sun.btrace.annotations.*;

@BTrace
public class PrintArgSimple {
	
	@OnMethod(
	        clazz="com.imooc.monitor_tuning.chapter4.Ch4Controller",
	        method="arg1",
	        location=@Location(Kind.ENTRY)
	)
	public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, AnyType[] args) {
		BTraceUtils.printArray(args);
		BTraceUtils.println(pcn+","+pmn);
		BTraceUtils.println();
    }
}

在命令窗口运行

btrace 4288 PrintArgSimple.java

注意事项

被修改的字节码文件不会被还原

你可能感兴趣的:(btrace,INSTALL,Java环境)