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

Eric Bodden eric.bodden at mail.mcgill.ca
Fri Jul 11 22:19:03 EDT 2008


Hi.

Which Soot version are you using? Line 287 looks like this:

VirtualCallSite site = new VirtualCallSite( s, source, null, null,
Kind.CLINIT );

I don't see how that could possibly throw a NullPointerException.

Eric

2008/6/19 Manjiri Namjoshi <manjiri.namjoshi at googlemail.com>:
> 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
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>



-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada


More information about the Soot-list mailing list