[Soot-list] Howto generate a CallGraph?
bq chan
cbqios at gmail.com
Wed Jul 16 04:58:05 EDT 2008
Sorry to bother you again. I was really frustrated:( I still have trouble
with generating CallGraphs .
Would you please give me a trivial example to show me how to generate the
CallGraph please.
the tutorial examples in
"~/soot-2.3.0/tutorial/guide/examples/call_graph/src/ " doesn't work for
me.
[root at localhost testers]# java -Xms256m -Xmx512m -Xss128m
dk.brics.soot.callgraphs.CallGraphExample -w testers/CallGraphs
[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:282)
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 CallGraphExample.main(CallGraphExample.java:25)
I have also tried the following code, but:
[cbq at localhost cg]$ java -Xms512m -Xmx1024m -Xss128m CgMain -w CgMain
wjtp
Soot started on Wed Jul 16 16:53:18 CST 2008
No main class given. Inferred 'CgMain' as main class.
[Call Graph] For information on where the call graph may be incomplete, use
the verbose option to the cg phase.
Segment fault
public class CgBody extends SceneTransformer
{
private static CgBody instance;
private CgBody() {}
public static CgBody v()
{
if(instance == null)
instance = new CgBody ();
return instance;
}
protected void internalTransform ( String phaseName, Map options)
{
CallGraph cg =Scene.v().getCallGraph();
G.v().out.println(cg);
G.v().out.println("size"+cg.size());
SootMethod src = Scene.v().getMainMethod();
Iterator targets = new Targets(cg.edgesOutOf(src));
while (targets.hasNext())
{
SootMethod tgt = (SootMethod)targets.next();
System.out.println(src + " may call " + tgt);
}
}
}
public class CgMain
{
public static void main(String[] args)
{
Pack pack=PackManager.v().getPack("wjtp");
pack.add(new Transform("wjtp.cgtrans",CgBody.v()));
soot.Main.main(args);
}
}
2008/5/6 Eric Bodden <eric.bodden at mail.mcgill.ca>:
> I agree with Li. What are you running it on? What's "CallGraphs"?
>
> Eric
>
> --
> Eric Bodden
> Sable Research Group
> McGill University, Montréal, Canada
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20080716/ab15d61d/attachment.htm
More information about the Soot-list
mailing list