6

我在追踪错误时遇到了真正的麻烦,知道哪种方法称为某种方法会很有帮助。有没有一种简单的方法可以从 java 中获取调用层次结构?Java 是应用程序的一小部分,因此我无法在 eclipse/net beans 中编译和运行整个应用程序,因此我无法访问 IDE 调试器的调用层次结构。

4

4 回答 4

15
Thread.currentThread().getStackTrace();

或者

Exception ex = new Exception();
ex.printStackTrace();

它相当慢,但可以用于调试目的。API 文档在这里

于 2009-07-28T23:15:47.723 回答
1

Java 是应用程序的一小部分,因此我无法在 eclipse/net beans 中编译和运行整个应用程序,因此我无法访问 IDE 调试器的调用层次结构。

您根本不需要运行该应用程序。如果您在 Eclipse 中创建项目,则可以使用其内置的 Call Hierarchy 工具来查找调用方法的所有可能位置。

有一个权衡:调用层次结构工具将为您提供调用方法的所有位置。如果您想/需要了解所有可能性,这是一个很好的选择。Neslson 的建议Thread.currentThread().getStackTrace()将为您提供在您为此调用编程的过程中调用方法的位置。细微差别是在此调用期间您可能不会遍历所有代码路径。如果您看到特定行为并想知道您是如何到达那里的,请使用该getStackTrace()选项。

于 2009-07-28T23:48:23.570 回答
0

您是否尝试过使用 Java 的远程调试功能? 谷歌搜索让你开始,如果你还没有

于 2009-07-28T23:15:43.417 回答
0

最好的办法是抛出异常,立即捕获并分析堆栈跟踪。

我相信这就是 Log4J 能够记录调用方法的方式。

于 2009-07-28T23:16:36.503 回答