写个测试类如下
Tip:一定要用JDK8以后版本的工具,否则会出现问题,之前版本的插件地址已经废弃了,新的地址都是域名中包含有github的
package a.b.c;
public class Test1 {
public static void main(String[] args) {
System.out.println("main method start!");
while (true) {
for (int i = 0; i < 100; i++) {
testM(i, (i + 5) % 4);
}
}
}
private static boolean testM(int a, int b) {
System.out.println("enter the method testM!");
int ret = a + b;
System.out.println("end the method testM");
return ret % 3 == 0;
}
}
BTrace调试代码如下
打开jvisualvm之后安装Btrace插件,然后在面板上右击进程,选中Trace application,之后会弹出个可以编写代码的框框
/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
@BTrace
public class TracingScript {
@OnMethod(clazz="a.b.c.Test1",method="testM",location=@Location(Kind.RETURN))
public static void func(@Self a.b.c.Test1 instance, int a, int b, @Return boolean result){
println("调用堆栈:");
jstack();
println(strcat("方法参数a:", str(a)));
println(strcat("方法参数b:", str(b)));
println(strcat("方法结果:",str(result)));
}
}