代码之家  ›  专栏  ›  技术社区  ›  Chathuranga Chandrasekara

查找Java程序的实际运行时调用树

  •  1
  • Chathuranga Chandrasekara  · 技术社区  · 16 年前

    我想改变一下原来的流程。而且要找到调用层次结构/引用并理解其流程非常麻烦。

    更新:在eclipse中使用调试模式或添加打印消息是不可行的。这个项目太大了

    2 回复  |  直到 16 年前
        1
  •  5
  •   VonC    16 年前

    AspectJ 记录所有调用的方法的名称 没有 更改原始程序。

    看到了吗 tracing 例如。

    aspect SimpleTracing {
        pointcut tracedCall():
            call(void FigureElement.draw(GraphicsContext));
    
        before(): tracedCall() {
            System.out.println("Entering: " + thisJoinPoint);
        }
    }
    
        2
  •  1
  •   Ira Baxter    16 年前

    什么 方法调用,而不是精确的顺序,您可以考虑使用测试覆盖工具。这些工具对源代码进行检测,以收集不同粒度的“this got executed”事实(仅方法调用,和/或由条件控制的每个代码块)。

    这个 SD Test Coverage Tool 是一个可以做到这一点的工具。

    它不会收集调用图,甚至不会收集调用的顺序。

    DMS Software Reengineering Toolkit . DMS将以自定义源到源控制的任意方式解析、转换和预打印Java program transformation 重写规则。在每个方法的开始和结束处插入日志转换是很容易的(事实上,这几乎就是SD测试覆盖工具的工作方式)。给定原始的enter-X和exit-X数据,构建运行时调用树是一项简单的任务。