BTrace的一些限制

BTrace是一个动态追踪工具,那么必然要求所有的操作都是只写操作,不会修改目标程序的运行状态。所以,BTrace能做的事情是有限的。一般来讲,一个BTrace类满足下面的条件:

  • 不能创建新的对象
  • 不能创建新的数组
  • 不能抛出异常
  • 不能捕获异常
  • 不能任意的调用对象的方法或者静态方法。只能调用com.sun.btrace.BTraceUtils类中的静态公有方法
  • 不能对静态域或者实例域赋值。但是BTrace类可以对他自己的静态域赋值,也就是说“trace state”是可改的
  • 不能包含非静态域和方法。一个BTrace类只能包含静态公有且返回void的方法。且只能包含静态域
  • 不能包含外部类,内部类,嵌入类以及局部类
  • 不能包含同步块或者同步方法
  • 不能包含循环(for, while, do…while都不允许)
  • 不能继承其他类(BTrace的类的超类只能是java.lang.Object)
  • 不能实现接口
  • 不能包含assert语句
  • 不能包含类名字面常亮(class literal)
使用Pcap4j实现一个抓包工具 BTrace的注解

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×