[Soot-list] Call-graph example code not working

Manjiri Namjoshi manjiri.namjoshi at googlemail.com
Thu Jun 19 17:07:41 EDT 2008


Hello all,

I am new to this list and have started exploring the Soot framework
recently, so this might be a very basic question, sorry about it.

I am trying to run the example code given on the Soot website to generate
call-graph.

Following is the code:

import java.util.Iterator;

import soot.Scene;
import soot.SootClass;
import soot.SootMethod;
import soot.jimple.toolkits.callgraph.CHATransformer;
import soot.jimple.toolkits.callgraph.CallGraph;
import soot.jimple.toolkits.callgraph.Targets;
import soot.options.Options;

public class CallGraphExample
{
    public static void main(String[] args) {
        Options.v().set_whole_program(true);

        SootClass mainClass =
Scene.v().loadClassAndSupport("testers.CallGraphs");
        mainClass.setApplicationClass();
        Scene.v().setMainClass(mainClass);

        SootClass a = Scene.v().loadClassAndSupport("testers.A");
        a.setApplicationClass();

        CHATransformer.v().transform();

        SootMethod src = mainClass.getMethodByName("doStuff");
        CallGraph cg = Scene.v().getCallGraph();

        Iterator targets = new Targets(cg.edgesOutOf(src));
        while (targets.hasNext()) {
            SootMethod tgt = (SootMethod)targets.next();
            System.out.println(src + " may call " + tgt);
        }
    }
}


But it is throwing following exception:

Exception in thread "main" java.lang.NullPointerException
        at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.getImplicitTargets(OnFlyCallGraphBuilder.java:287)
        at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:183)
        at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
        at
soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:87)
        at
soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(CHATransformer.java:43)
        at soot.SceneTransformer.transform(SceneTransformer.java:39)
        at soot.SceneTransformer.transform(SceneTransformer.java:45)
        at soot.SceneTransformer.transform(SceneTransformer.java:50)
        at CallGraphExample.main(CallGraphExample.java:19)

Can anyone please help me with this?


Thank You.

- Manjiri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20080619/87fad4f9/attachment.htm


More information about the Soot-list mailing list