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