我想跟踪Java中调用的函数的开始[和结尾],如下面的代码所示:
public void foo() { System.out.println("begin of foo()"); ... System.out.println("e-n-d of foo()"); }但是转储代码System.out.println维护是乏味和容易出错的,因为在一个类中可能会有几十个函数。
任何好主意都可以缓解这项工作? 我不想在整个文件中使用转储语句。
执行开始和结束两个或一个痕迹是perferd。 但是,如果不可能,那个函数被调用的记录也是有帮助的。 我的意思是不关心确切的beginnig和结束,只是告诉函数已被调用。
I want to trace the beginning [& ending] of functions called in Java, like the following code:
public void foo() { System.out.println("begin of foo()"); ... System.out.println("e-n-d of foo()"); }But maintaining of the dump code System.out.println is something tedious and error-prone, for there may be tens of thounds of function in an class.
Any good idea can ease this work? I don't want dump statements all over the file.
Implementation of both or one of the beginning & ending traces is perferd. But, if impossible, recordings of that the function has been called is also helpful. I mean not care the exact beginnig and ending, just tell that the function has been called.
最满意答案
最简单的方法就是你选择的方法。
一个简单的替代System.out调用将使用日志框架。 然后,您可以根据选定的“日志记录级别”打开和关闭信息
更复杂的解决方案将使用面向方面的编程技术(例如由AspectJ提供),但是这会让您陷入陡峭的学习曲线。
也许一种基于工具的方法可以满足您的需求:所谓的“分析器”可以“检测”您的代码并准确报告运行期间调用哪种方法。
The easiest approach is the one you've chose.
An easy replacement for the System.out calls would be using a logging framework. Then you could switch the information on and off according to a selected "logging level"
More sophisticated solutions would use aspect oriented programming techniques (provide by AspectJ, for instance), but this puts you on a steep learning curve.
Maybe a tool-based a approach fits your needs: so called "profilers" can "instrument" your code and report exactly which method was called during a run.
更多推荐
发布评论