如何生成Java调用图

Guy*_*Guy 14 java eclipse graph call-graph

我想分析和理解某个Java应用程序,我认为调用图非常有用.我如何生成一个?我正在使用Eclipse.

hel*_*ios 14

获得callstack

1)如果你可以调试应用程序只需设置一个断点(双击代码的左边缘)并等待它停止.如果您不在,请转到Debug Perspective,然后打开Call stack View/Panel.它有调用堆栈:)

2)如果要在某处打印此堆栈跟踪,请使用Exception:

Exception aux = new Exception("I'm here"); // not for throwing!
aux.printStackTrace(); // if you want it in stdout
Run Code Online (Sandbox Code Playgroud)

要么

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
Run Code Online (Sandbox Code Playgroud)

获取方法参考

您可以通过右键单击"引用","工作空间"来获取对方法的所有引用.它将搜索当前打开的项目中的所有调用.非常有用.

分析应用程序

(感谢那些已经回答了探查器选项的人)

Eclipse TPTP提供分析:

http://www.eclipse.org/tptp/home/project_info/general/whatisTPTP.php

  • 还有一个`Thread#dumpStack()`,它优先于`new Exception()`. (2认同)

Geo*_*ios 7

我有完全相同的问题,所以我编写了java-callgraph工具套件.使用它,您可以创建动态(运行时)调用图和静态调用图,前提是您拥有程序及其依赖项的jar文件.