一、簡單介紹
btrace是一個生產環境中可能出現各種問題,但是這些問題又不是程序error導致的,可能是邏輯性錯誤,這時候需要獲取程序運行時的數據信息,如方法參數、返回值來定位問題,通過傳統的增加日誌記錄的方式非常繁瑣,而且需要重啓server,代價很大。BTrace應運而生,可以動態地跟蹤java運行程序,將跟蹤字節碼注入到運行類中,對運行代碼侵入較小,對性能上的影響可以忽略不計。
*(簡單來說,btrace是一個沒有代碼侵入性的,動態監控的debug工具)
https://github.com/btraceio/btrace
在https://github.com/btraceio/btrace/releases下載好後解壓,進入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 = @Location (Kind.RETURN) ) public static void print( @Duration long duration) { //單位是納秒,要轉爲毫秒 println(strcat( "duration(ns): " , str(duration ))); //println(strcat("duration(ms): ", str(duration / 1000000))); } } |