javaeclipsegraphcall-graph

How to generate a Java call graph, Eclipse based solutions


I'd like to analyze and understand a certain Java app and I think a call graph would be very useful. How do I generate one? I'm using Eclipse.


Solution

  • Getting callstack

    1) If you can debug the application simply put a breakpoint (double click over the left margin of the code) and wait it to stop. Go to Debug Perspective if you're not there, and open the Call stack View/Panel. It has the call stack :)

    2) If you want to print this stack trace somewhere use an Exception:

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

    or

    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
    

    Obtaining method references

    You can obtain all references to a method by right-clicking, References, Workspace. It will search all callings in your current open projects. Very very useful.

    Profiling an app

    (thanks those who had answered the profiler option)

    Eclipse TPTP provides profiling:

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