案例一:
import java.util.Random;
/**
* 类说明:
*
* @author 作者 LzwGlory
* @version 创建时间:2015年11月30日 下午3:08:08
*
*/
public class BTraceTest {
public static void main(String[] args) throws Exception {
Random random = new Random();
// 计数器
Counter counter = new Counter();
while (true) {
// 每次增加随机值
counter.add(random.nextInt(10));
Thread.sleep(1000);
}
}
}
/**
* 类说明:
*
* @author 作者 LzwGlory
* @version 创建时间:2015年11月30日 下午3:08:28
*
*/
public class Counter {
// 总数
private static int totalCount = 0;
public int add(int num) throws Exception {
totalCount += num;
sleep();
return totalCount;
}
public void sleep() throws Exception {
Thread.sleep(1000);
}
}
/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class TracingScript {
/* put your code here */
@OnMethod(clazz="com.ultrapower.rw.test.Counter",method="add",location=@Location(Kind.RETURN))
public static void execute(@Self com.ultrapower.rw.test.Counter object,int num){
println(strcat("num: ",str(num)));
println(strcat("totalCount: ",str(get(field("com.ultrapower.rw.test.Counter","totalCount")))));
}
}
案例二:
/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class MethodTimeCost {
@TLS private static long starttime;
@OnMethod(clazz="/com\\.ultrapower\\.rw\\.web\\.ows\\.controller\\..*/",method="/.*/",location=@Location(Kind.ENTRY))
public static void startExecute(){
starttime=timeMillis();
}
@OnMethod(clazz="/com\\.ultrapower\\.rw\\.web\\.ows\\.controller\\..*/",method="/.*/",location=@Location(Kind.RETURN))
public static void endExecute(){
long timecost=timeMillis()-starttime;
if(timecost>10){
print(strcat(strcat(name(probeClass()),"."),probeMethod()));
print(" [");
print(strcat("Time taken: ",str(timecost)));
println("]");
}
}
}