免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2223 | 回复: 1
打印 上一主题 下一主题

BTrace拦截输入参数及返回值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-13 16:45 |只看该作者 |倒序浏览
BTrace拦截输入参数及返回值








服务端类:
Java代码
  1. package test;   
  2.   
  3. public class BTraceServer {   
  4.   
  5.     public String sayHello(int i) {   
  6.         return "参数" + i;   
  7.     }   
  8.   
  9.     public static void main(String[] args) throws InterruptedException {   
  10.         BTraceServer bt = new BTraceServer();   
  11.         int i = 0;   
  12.         while (true) {   
  13.             System.err.println(bt.sayHello(i++));   
  14.             Thread.sleep(1000);   
  15.         }   
  16.     }   
  17.   
  18. }  

  19. package test;

  20. public class BTraceServer {

  21.         public String sayHello(int i) {
  22.                 return "参数" + i;
  23.         }

  24.         public static void main(String[] args) throws InterruptedException {
  25.                 BTraceServer bt = new BTraceServer();
  26.                 int i = 0;
  27.                 while (true) {
  28.                         System.err.println(bt.sayHello(i++));
  29.                         Thread.sleep(1000);
  30.                 }
  31.         }

  32. }
复制代码
客户端类:
Java代码  
package test;
  1. import com.sun.btrace.BTraceUtils;   
  2. import com.sun.btrace.annotations.BTrace;   
  3. import com.sun.btrace.annotations.Kind;   
  4. import com.sun.btrace.annotations.Location;   
  5. import com.sun.btrace.annotations.OnMethod;   
  6. import com.sun.btrace.annotations.Return;   
  7. import com.sun.btrace.annotations.Self;   
  8.   
  9. @BTrace  
  10. public class BTraceTest {   
  11.     @OnMethod(clazz="test.BTraceServer", method="sayHello",   
  12.              location=@Location(Kind.RETURN))   
  13.     public static void onSayHello(@Self BTraceServer s, int param, @Return String ret){   
  14.         BTraceUtils.print(param);   
  15.         BTraceUtils.println(ret);   
  16.     }   
  17.                
  18. }  

  19. package test;

  20. import com.sun.btrace.BTraceUtils;
  21. import com.sun.btrace.annotations.BTrace;
  22. import com.sun.btrace.annotations.Kind;
  23. import com.sun.btrace.annotations.Location;
  24. import com.sun.btrace.annotations.OnMethod;
  25. import com.sun.btrace.annotations.Return;
  26. import com.sun.btrace.annotations.Self;

  27. @BTrace
  28. public class BTraceTest {
  29.         @OnMethod(clazz="test.BTraceServer", method="sayHello",
  30.                      location=@Location(Kind.RETURN))
  31.         public static void onSayHello(@Self BTraceServer s, int param, @Return String ret){
  32.                 BTraceUtils.print(param);
  33.                 BTraceUtils.println(ret);
  34.         }
  35.                        
  36. }
复制代码
1、将服务端类打成jar包;
2、btrace执行btrace -classpath D:\doc\btrace\btrace-bin\build\test.jar 【PID】 BTraceTest.java

论坛徽章:
0
2 [报告]
发表于 2012-03-14 16:36 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP