Eclipse - 显示完整的调用堆栈(例如,当它在调试器中遇到断点时)而不放入断点?

2022-09-04 04:02:25

我正在使用一个对我来说是新的旧版Java应用程序,因此要弄清楚它是如何工作的并且更容易找到东西的一种方法,我认为是能够在我执行操作后获得完整的堆栈跟踪,以便能够根据特定的UI操作查看正在使用的类。我本来以为这在调试器中是可能的,但似乎只有在我插入断点时才有效,在这种情况下,这样做的部分目的是让我不必知道调用了什么才能首先插入断点(因为这将有助于告诉我)。

我很抱歉,如果这是一个基本问题,我已经搜索了这个,但我没有找到正确的答案。


答案 1

这并不能直接回答你的问题,但也许它会更好地解决你的问题。看看BTrace。它允许您检测正在运行的Java应用程序并插入自己的一些基本代码。例如,您可以让它写出整个方法调用链,以帮助您找到通过应用程序的方式。它有点类似于AspectJ,但具有完全不同的目的,并且不需要更改项目源代码:

“BTrace 是一个安全的 Java 动态跟踪工具。BTrace 的工作原理是动态(字节码)检测正在运行的 Java 程序的类。BTrace 将跟踪操作插入到正在运行的 Java 程序的类中,并对跟踪的程序类进行热交换。


答案 2

一些建议:

某些探查器将允许您从任何特定方法向上(有时向下)走,以查看正在调用和被调用的内容。我发现了关于心流的令人惊讶的信息,即使在我认为自己很熟悉的应用程序中也是如此。

为了理解主线流,我认为没有更好的替代方法可以替代使用调试器进行交互工作。它将引导你学习其他重要的事情。不是你想听的,我知道。这假设您可以在错过关键斜坡时快速重新启动应用程序。

反向设计大型遗留应用程序是我相当经常使用UML的地方。有太多的东西要留在我的脑海中,以形成一个好的大局。如果你有一个UML工具可以进行逆向工程,那么用应用程序加载它,然后可能会对你不关心的类进行严厉修剪,因为它们是微不足道的或明显的。以有助于您理解的方式排列图表。我以这种方式使用了Together,Magic Draw和Visual Paradigm。一起工作是最好的 - 但这是十年前。