当前位置: 首页 > 面试题库 >

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

蓬琦
2023-03-14
问题内容

假设我有一个包含数百种方法的大型程序。并且根据输入的性质,程序流程正在改变。

想我想对原始流程进行更改。查找呼叫层次结构/参考并了解流程非常麻烦。

我在Eclipse中对此有任何解决方案吗?还是插件?例如,我只需要按时间顺序的方法名称的日志即可。然后,我不必担心与“给定输入”无关的方法

更新:在eclipse中使用调试模式或添加打印消息是不可行的。该程序太大了。:)


问题答案:

您可以使用 AspectJ 记录所有被调用方法的名称, 而无需
更改原始程序。

例如,请参阅 跟踪

aspect SimpleTracing {
    pointcut tracedCall():
        call(void FigureElement.draw(GraphicsContext));

    before(): tracedCall() {
        System.out.println("Entering: " + thisJoinPoint);
    }
}


 类似资料:
  • 我创建了两个类来计算数字,其中一个类同步执行,另一个类将其分成两半,并在两个线程中执行这两半。(intel i5(4个CPU),8GB ram)代码如下: 公共类: 多线程执行:public class Sheet2{

  • 问题内容: 我试图找到Java运行时可用的所有类的名称,并在Guava中使用反射将代码成功实现了一些成功,例如: 这似乎在某种程度上可以使我获得大约2500个类名,但是并没有找到所有的类名,特别是我确实需要了解的所有类,特别是java.lang,java.util等。 我应该为此使用其他类加载器吗?我也尝试过 任何指针将不胜感激。谢谢 恩文 我从这篇文章中使用了更多信息:如何列出特定类加载器中加载

  • 问题内容: 我正在寻找一种在执行查询时对其进行调试的方法,我想知道是否有一种方法可以使MySQLdb在完成参数插入及所有操作之后打印出它所运行的实际查询?从文档中看,似乎应该有一个Cursor.info()调用,该调用将提供有关上次查询运行的信息,但是在我的版本(1.2.2)中不存在。 这似乎是一个显而易见的问题,但是对于我所有的搜索,我一直找不到答案。提前致谢。 问题答案: 我们在游标对象上发现

  • 我想用java中的参数调用python程序。但我的输出是空白的。代码在这里。 Python代码如下: java代码在这里: 我想输出30,有人能告诉我哪里出错了吗?

  • 问题内容: 我正在寻找一种在执行查询时调试查询的方法,我想知道是否有一种方法可以让MySQLdb在完成参数插入及所有操作之后打印出它运行的实际查询?从文档看来,似乎应该有一个Cursor.info()调用,该调用将提供有关上次查询运行的信息,但是在我的版本(1.2.2)中不存在。 这似乎是一个显而易见的问题,但是对于我所有的搜索,我一直找不到答案。提前致谢。 问题答案: 我们在游标对象上发现了一个