btrace使用
2015-01-27 16:30
85 查看
btrace使用
目录btracee是btrace的解压目录btrace/btrace是btrace的项目工程
root@ubuntu:/usr/local/bogon/btrace# tree btrace btrace ├── bin ├── btrace-agent.jar ├── btrace-boot.jar ├── btrace-client.jar └── src ├── btrace ├── HelloWorld.class ├── HelloWorld.java └── TraceHelloWorld.java 3 directories, 6 files root@ubuntu:/usr/local/bogon/btrace# cd - /usr/local/bogon root@ubuntu:/usr/local/bogon# tree btrace btrace ├── bin │ ├── btrace │ ├── btrace.bat │ ├── btracec │ ├── btracec.bat │ ├── btracer │ └── btracer.bat ├── btrace │ ├── bin │ ├── btrace-agent.jar │ ├── btrace-boot.jar │ ├── btrace-client.jar │ └── src │ ├── btrace │ ├── HelloWorld.class │ ├── HelloWorld.java │ └── TraceHelloWorld.java ├── btrace-bin.tar.gz ├── btrace.zip ├── build │ ├── btrace-agent.jar │ ├── btrace-boot.jar │ └── btrace-client.jar ├── COPYRIGHT ├── docs
在src目录直接执行btrace pid TraceHelloWorld.java
# ../../bin/btrace 9221 TraceHelloWorld.java the class name=>HelloWorld the class method=>execute the class method params=>1498 the class method execute time=>1499 ------------------------------------------- the class name=>HelloWorld the class method=>execute the class method params=>1903 the class method execute time=>1903 -------------------------------------------
如:TraceHelloWorld
# cat TraceHelloWorld.java import static com.sun.btrace.BTraceUtils.println; import static com.sun.btrace.BTraceUtils.str; import static com.sun.btrace.BTraceUtils.strcat; import static com.sun.btrace.BTraceUtils.timeMillis; import com.sun.btrace.annotations.BTrace; import com.sun.btrace.annotations.Kind; import com.sun.btrace.annotations.Location; import com.sun.btrace.annotations.OnMethod; import com.sun.btrace.annotations.ProbeClassName; import com.sun.btrace.annotations.ProbeMethodName; import com.sun.btrace.annotations.TLS; @BTrace public class TraceHelloWorld { @TLS private static long startTime = 0; @OnMethod(clazz = "HelloWorld", method = "execute") public static void startMethod(){ startTime = timeMillis(); } @OnMethod(clazz = "HelloWorld", method = "execute", location = @Location(Kind.RETURN)) public static void endMethod(){ println(strcat("the class method execute time=>", str(timeMillis()-startTime))); println("-------------------------------------------"); } @OnMethod(clazz = "HelloWorld", method = "execute", location = @Location(Kind.RETURN)) public static void traceExecute(@ProbeClassName String name,@ProbeMethodName String method,int sleepTime){ println(strcat("the class name=>", name)); println(strcat("the class method=>", method)); println(strcat("the class method params=>", str(sleepTime))); } }
比如我这里跟踪Jedis的连接ConnectionTrace
import static com.sun.btrace.BTraceUtils.println; import static com.sun.btrace.BTraceUtils.timeMillis; import com.sun.btrace.BTraceUtils.Threads; import com.sun.btrace.annotations.Export; import com.sun.btrace.annotations.OnExit; import com.sun.btrace.annotations.OnMethod; import com.sun.btrace.annotations.Return; import com.sun.btrace.annotations.Self; import com.sun.btrace.annotations.TLS; public class ConnectionTrace { @TLS private static long startTime = 0; @Export private static long openedCount; @Export private static long penedCount; @Export private static long closedCount; @OnMethod(clazz = "/*.jedis.Connection/", method = "makeObject") public static void startMethod(@Return Object obj){ startTime = timeMillis(); penedCount++; println("One connection is opened!"); println(obj); Threads.jstack(); } @OnMethod(clazz = "/*.jedis.Connection/", method = "destroyObject") public static void endMethod(@Self Object obj){ closedCount++; println("One connection is closed!"); println(obj); Threads.jstack(); } @OnExit public static void f(){ println("Total opened connection:"); println(openedCount); println("Total closed connection:"); println(closedCount); } }
相关文章推荐
- BTrace使用简介
- Btrace使用
- BTrace使用总结
- btrace 的使用
- 使用BTRACE定位系统中慢的问题
- 使用btrace需要注意的几个问题
- 在只有JRE的环境下使用BTrace
- BTrace简介及使用
- VisualVM Btrace使用
- BTrace使用指南,转自javaeye
- 【运维工具】BTrace使用
- 调试工具BTrace 的使用--例子
- BTrace使用总结
- btrace使用step by step
- 使用btrace需要注意的几个问题
- Btrace在性能测试中的使用
- BTrace使用简介
- btrace 的使用
- 在线调试工具BTrace 的使用--例子
- 使用jvisualvm.exe 的Btrace插件监控应用程序