Btrace 進階學習

Btrace 使用方法

設置環境變量 \(BTRACE_HOME\) ,並 將\(bin\) 添加到PATH,隨後在命令行輸出以下命令即可運行。

btrace pid fileName.java 

或者將 \(fileName.java\) 放在 \(/brace/bin\) 目錄下運行

進階細節

1.若監測的類爲接口類,則需要在類名前加 \(+\) ,例如:

+cn.freemethod.business.MyInterface

2.若監測的爲註解,則需在註解名前加 \(@\) ,例如:

@javax.annotation.Resource

3.若要使用正則表達式,需要將類名或者方法名寫在兩個斜槓中間,如:

"/com\\.ewan\\..+/"

注意斜槓要被轉義,所以特殊符號前要兩個斜槓

4.(@Self 註釋的this, 完整的參數列表,@Return 註釋的返回值) 若要傳入這三者,則一定要按照這樣的順序排列,若不需要可以省略,但參數列表一定要完整,否則無法定位到你要監測的函數

5.假如你要監測的類集合的傳入參數或返回值不統一,則可以使用 \(AnyType[]~args\) 方法傳入,返回值使用 \(AnyType\) ,例如:

    @OnMethod(clazz = "/cn\\.freemethod\\.business\\..+/", method = "/.+/", location = @Location(value = Kind.RETURN))
    public static void dataCaptrue(@ProbeClassName String className, @ProbeMethodName String methodName, AnyType[] args){
        println(className);
        println(methodName);
        if(args.length > 0)
            printFields(args[0]);
        //printArray(args);
    }

若要打印參數列表,則使用 \(printArray(args)\) , 若 \(args\) 含有非JAVA基本類型,則會輸出類名,不會輸出實例。

6.若你傳入的參數不是JAVA基本類型,而是自定義的類,則需要用 \(AnyType[]~args\) 先傳入,然後再通過 \(printFields(args[0])\) 方法來反射得到這個類,JAVA 中 \(Object\) 的繼承類輸出是 \(JSON\) 格式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章