查找Java程序的实际运行时调用树
问题描述:
假设我有一个包含数百种方法的大程序。根据输入的性质,程序流程正在发生变化。查找Java程序的实际运行时调用树
想想我想改变原始流程。查找调用层次结构/引用并理解流程非常麻烦。
在Eclipse中我是否有任何解决方案?或者一个插件?作为一个例子,我只需要一个按时间顺序排列的方法名称的日志。然后,我不必担心与“给定输入”无关的方法
更新:在eclipse中使用调试模式或添加打印消息是不可行的。该计划是如此之大。 :)
答
如果你想知道的是什么方法接到电话,而不是精确的顺序,你可以考虑使用一个测试覆盖工具。这些工具对源代码进行测试,以不同程度的粒度(仅方法调用,和/或由条件控制的每个代码块)收集“这个得到执行”的事实。
SD Test Coverage Tool是一个可以做到这一点的工具。
它不会收集通话图表甚至通话的顺序。
如果您想更好地控制仪器,可以考虑使用DMS Software Reengineering Toolkit。 DMS将以任意方式解析,转换和相应打印Java,这些任意方式由自定义源到源program transformation重写规则来控制。将日志转换插入每个方法的开始和结束都很容易(事实上,这几乎就是SD测试覆盖工具的工作原理)。鉴于原始的enter-X和exit-X数据,构建运行时调用树是一项直接的任务。
您是否想要在运行时发生的实际调用树?您的问题意味着您只想知道给定输入的相关代码,而不是确切的调用树。 – 2010-04-06 05:50:02
@ Ira Baxter:是的,实际的呼叫树。感谢澄清问题:) – 2010-04-06 05:52:14