<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      BTrace實戰

      BTrace在解決現場問題的時候非常有用。

      1、概述

      1.1下載

      https://github.com/btraceio/btrace,最新版本是1.3.9

      目前1.3.x系列最低支持JDK1.7,要想使用JDK1.6的話,可以下載http://download.csdn.net/detail/ccscu/9899450

      1.2開始使用

      使用命令:./btrace pid HelloWorld.java

      1.3安全限制

      默認不支持for循環等,可以使用-u來突破限制

      1.4定義classpath

      -cp

      1.5輸出結果到文件

      推薦使用重定向而不是-o

      1.6預編譯腳本

      ./btractc HelloWorld.java

      2、攔截方法定義

      1、構造函數的名稱是<init>

      @OnMethod(clazz="java.util.Timer", method="<init>")

      2、內部類的名稱是在類名和內部類之間加上$

      @OnMethod(clazz="org.apache.struts2.dispatcher.Dispatcher$Locator", method="getLocation")

      3、攔截多個同名的函數,可以定義不同的參數列表區分

       

      3、攔截時機

      3.1Kind.ENTRY和Kind.RETURN

      location=@Location(Kind.RETURN)

      默認值就是Kind.ENTRY,如果使用AnyType來定義,必須使用Kind.ENTRY,否則會進入一種特殊的靜默模式;

      如果想獲得返回值或者運行時間,必須使用Kind.RETURN。

      3.2Kind.THROW

      @OnMethod(clazz = "org.apache.coyote.tomcat5.CoyoteResponse", method = "getWriter", location = @Location(Kind.THROW))

       

      4、獲取this、參數和返回值

      4.1定義注入

      @OnMethod(clazz = "java.util.HashMap", method = "put", location = @Location(Kind.RETURN))
       public static void onPutMap(@Self Object obj, String key, String value, @Return AnyType result)

      參數列表要么不定義,要定義就需要完整,否則BTrace無法處理同名函數;

      也可以使用AnyType或者AnyType[]來表示,這個時候必須使用Kind.ENTR,否則會進入一種特殊的靜默模式,只要有一個函數打印錯了,整個BTrace就什么也打印不出來。

      4.2獲取對象的屬性值

      如果是JDK的類

      field("java.lang.Thread", "name");

      非JDK的類

      private static Field response = field(classForName("com.neusoft.unieap.techcomp.ria.action.BaseEntry", contextClassLoader()), "response") ;

      Object res = get(response, obj);

      這里除了get方法之外,還有getBoolean、getInt等各種基礎類型的方法。

       

      5、其他常用API

      5.1獲取當前線程名稱

      BTraceUtils.Threads.name(BTraceUtils.currentThread())

      5.2獲取隊形的Hash code

      BTraceUtils.identityHashCode(params[1])

      5.3獲取對象的類名稱

      BTraceUtils.Reflective.name(BTraceUtils.classOf(obj))

      其中BTraceUtils.classOf(obj)返回類,BTraceUtils.Reflective.name返回類名稱

       

      在寫這篇文章的時候借鑒了以下文章:

      1、http://calvin1978.blogcn.com/articles/btrace1.html

      江南白衣的文筆一流,他的BTrace的文章架構非常好:我完全模仿了他的結構

      2、http://www.bo56.com/btrace示例和資料整理/

      學習了如何拿到成員變量的值

       3、https://www.gitbook.com/book/json-liu/btrace/details

      BTrace的中文使用手冊,入門必備

       

      歡迎查看我之前的博客 http://blog.csdn.net/ccscu

      posted @ 2017-07-15 01:13  硬漢1840  閱讀(3631)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久se精品一区二区三区| 国产无遮挡猛进猛出免费软件| 国产精品国产精品国产精品| 一个色的导航| 国产综合视频一区二区三区| 永久天堂网 av手机版| 亚洲天堂亚洲天堂亚洲天堂| 精品人妻av区乱码| 日韩有码国产精品一区| 国产国语毛片在线看国产| 亚洲欧美日韩精品久久亚洲区色播| 亚洲高潮喷水无码AV电影| 国产精成人品| 日韩一区二区在线看精品| 精品亚洲精品日韩精品| 国产精品午夜福利合集| 国产手机在线αⅴ片无码观看| 精品一区二区三区不卡| 亚洲日本精品一区二区| 保亭| 1精品啪国产在线观看免费牛牛| 国产精品 欧美激情 在线播放| 中文字幕无码av不卡一区| 狠狠色综合久久狠狠色综合 | 日韩最新中文字幕| 中文字幕一区二区精品区| 性色av蜜臀av色欲av| 国产精品国产精品一区精品| 久久中文字幕一区二区| 韩国免费A级毛片久久| 91精品亚洲一区二区三区| 永久无码天堂网小说区| 精品国产一区二区三区香| 巨爆乳中文字幕爆乳区| 亚洲人妻精品一区二区| 亚洲悠悠色综合中文字幕| 天天躁日日躁狠狠躁中文字幕| 亚洲av第二区国产精品| 国产精品中文av专线| 美乳丰满人妻无码视频| 噜妇插内射精品|