我想分析和理解某个Java应用程序,我认为调用图非常有用。我如何生成一个?我正在使用Eclipse。
答案 0 :(得分:14)
获取callstack
1)如果你可以 debug ,只需输入一个断点(双击代码左边缘)并等待它停止。如果您不在,请转到Debug Perspective,然后打开Call stack View / Panel。它有调用栈:)
2)如果要在某处打印此堆栈跟踪,请使用异常:
Exception aux = new Exception("I'm here"); // not for throwing!
aux.printStackTrace(); // if you want it in stdout
或
Exception aux = new Exception("I'm here"); // not for throwing!
StringWriter sw = new StringWriter();
aux.printStackTrace(new PrintWriter(sw));
String result = sw.toString(); // if you want it in a string
获取方法参考
您可以通过右键单击“引用”,“工作区”来获取对方法的所有引用。它将搜索当前打开的项目中的所有调用。非常有用。
分析应用
(感谢那些已经回答过探查器选项的人)
Eclipse TPTP提供分析:
http://www.eclipse.org/tptp/home/project_info/general/whatisTPTP.php
答案 1 :(得分:7)
我遇到了完全相同的问题,所以我编写了java-callgraph套工具。使用它,您可以创建动态(运行时)调用图和静态调用图,前提是您拥有程序及其依赖项的jar文件。
答案 2 :(得分:4)
Netbeans profiler非常适合这个!!
分析功能包括CPU, 内存和线程分析也是如此 作为基本的JVM监控...
您还可以使用jconsole命令(部分jdk )
它启动了一个图形控制台工具 这使您可以监控和管理 Java应用程序和虚拟机 在本地或远程机器上。
答案 3 :(得分:3)
使用Eclipse Profiler可能会得到你想要的东西。
答案 4 :(得分:2)
快速且脏,创建新的异常并打印堆栈跟踪。
Exception e = new Exception();
e.printStackTrace();
答案 5 :(得分:2)
你无法在eclipse中获得整个代码的图表。但是,您可以获取方法的调用者或被调用者的树视图。
在源代码中,右键单击感兴趣的方法名称,例如 main(String [] args),然后单击“打开调用层次结构”。 (在Windows上按Ctrl + Alt + H)
这将打开调用者层次结构(调用者层次结构)的树视图。可以选择查看Callee层次结构。
要复制到文本文件,请在“调用层次结构视图”中的节点上右键单击,然后单击“复制扩展层次结构”。
缺点:
答案 6 :(得分:1)
我有时会使用Eclipse探查器。
答案 7 :(得分:1)
Thread.dumpStack()允许您输出当前调用堆栈,而不会抛出异常或使用调试器。这将输出到控制台。
您可以在代码的“热点”中调用dumpStack()来获取应用程序所需的调用堆栈。