您的位置:首页 > 其它

btrace使用

2017-04-01 14:00 246 查看

1. 编译btrace脚本

btracec -classpath ./test.jar BtraceScrpit.java

其中 test.jar要跟踪的目标jar包,BtraceScrpit脚本如下

package org.arrow.lab.btrace;

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

@BTrace
public class BtraceScrpit {

@Export
private static long count;

@OnMethod(
clazz = "org.arrow.lab.btrace.BtraceCase",
method = "add",
location = @Location(Kind.RETURN)
)
public static void run(@Self Object obj, int a, int b, @Return int result, @Duration long time) {
BTraceUtils.println("param : a=" + a + ", b = " + b);

BTraceUtils.println("result : result=" + result + ", cost = " + time);

count++;
}

@OnTimer(1000)
public static void time() {
BTraceUtils.println("export count = " + count);
}
}


2. 脚本使用

编译过的btrace脚本,会在相关package下生成.class文件,编译过后,即可不需要classpath的相关jar包

即原来 xxx.jar 是用来编译脚本的

有脚本的根目录下执行btrace命令即可跟踪到相关的进程

可以使用-o指定日志文件,文件会输出到 目录PID的运行目录下

或可以使用 > out.txt进行输出的重定向

btrace -o a.txt <PID> BtraceScrpit.class

## or 自动编译

btrace -o a.txt <PID> BtraceScript.java


3. 退出

在windows下,直接关闭cmd命令窗口

如果 ctrl + c退出的话,可能导致目标进程同时退出

运行脚本时,最好将控制台输出重定向到目标文件中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  btrace