一、简单介绍
btrace是一个生产环境中可能出现各种问题,但是这些问题又不是程序error导致的,可能是逻辑性错误,这时候需要获取程序运行时的数据信息,如方法参数、返回值来定位问题,通过传统的增加日志记录的方式非常繁琐,而且需要重启server,代价很大。BTrace应运而生,可以动态地跟踪java运行程序,将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计。
*(简单来说,btrace是一个没有代码侵入性的,动态监控的debug工具)
在下载好后解压,进入bin目录
##Btrace代码,代码中需要制定包名+类名+方法名,用于打印需要的debug信息
HfBtrace.java
import java.util.Date; import com.sun.btrace.BTraceUtils; import static com.sun.btrace.BTraceUtils.*; import com.sun.btrace.annotations.*; @BTrace public class Btrace { @OnMethod ( clazz = "com.hf.demo.JavaDemo" , method = "print" , location =
(Kind.RETURN) ) public static void print( @Duration long duration) { //单位是纳秒,要转为毫秒 println(strcat( "duration(ns): " , str(duration ))); //println(strcat("duration(ms): ", str(duration / 1000000))); } } |