[Soot-list] Using CHATranformer
Chandan Rupakheti
rupakhcr at clarkson.edu
Tue Jun 23 15:04:45 EDT 2009
Hello,
I am trying to use Soot's call graph. As a starting point I wanted to try
CHATransformer. I have two classes in "callgraph" package as follows:
----------------------------------------------------
public class PrintCallGraph {
public static void main(String[] args) {
soot.options.Options.v().set_whole_program(true);
SootClass mainClass =
Scene.v().loadClassAndSupport("callgraph.Main");
mainClass.setApplicationClass();
Scene.v().setMainClass(mainClass);
CHATransformer.v().transform();
SootMethod src = mainClass.getMethodByName("aMethod");
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);
}
}
}
----------------------------------------------------
public class Main {
public static void main(String[] args) {
aMethod();
}
public static void aMethod() {
Main main = new Main();
main.hello();
}
public void hello() {
System.out.println("Hello World!");
}
}
----------------------------------------------------
When I run PrintCallGraph, I get following NullPointerException:
[Call Graph] For information on where the call graph may be incomplete, use
the verbose option to the cg phase.
Exception in thread "main" java.lang.NullPointerException
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.getImplicitTargets(OnFlyCallGraphBuilder.java:250)
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:182)
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
at
soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:84)
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 callgraph.PrintCallGraph.main(PrintCallGraph.java:19)
I would be very thankful if anybody could point me what am I doing wrong.
Thanks,
Chandan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20090623/f9cd6f32/attachment.html
More information about the Soot-list
mailing list