我想跟踪Java中调用的函数的开头[&结尾],如以下代码:
public void foo() {
System.out.println("begin of foo()");
...
System.out.println("e-n-d of foo()");
}
但维护转储代码System.out.println
这是一件乏味且容易出错的事情,因为一个类中可能有数以万计的函数。
有什么好主意可以减轻这项工作吗?我不希望转储语句遍布整个文件。
优选实现开始和结束跟踪两者或其中之一。
但是,如果不可能的话,记录该函数被调用的情况也是有帮助的。我的意思是不关心确切的开始和结束,只需告诉该函数已被调用。
另一种方法是使用BTrace- 它有点类似于 AspectJ,但可以附加到正在运行的 java 应用程序并即时应用日志记录代码(它也可以从应用程序分离,删除所有注入的代码,但让应用程序像使用之前一样运行BTrace)
为了使用BTrace您将编写一个简单的跟踪脚本,其 POJO 注释为BTrace注释(以及有关可以使用哪些内容来避免目标应用程序崩溃的一些限制)。
在这种情况下,脚本将如下所示:
@BTrace public class FooTracer {
@OnMethod(clazz="Bar", method="foo")
public static void onEntry() {
println("begin of foo()");
}
@OnMethod(clazz="Bar", method="foo", location=@Location(Kind.RETURN))
public static void onExit() {
println("end of foo");
}
}
您还可以做很多事情BTrace- 只需参考用户指南和示例。名义上,它是控制台应用程序,但已集成到VisualVM创造与他人合作的经验BTrace更令人愉快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)