[Soot-list] How to use Paddle

Manu Sridharan manu_s at eecs.berkeley.edu
Sun Mar 26 11:28:02 EST 2006


Hi Joe,

I think I see a couple of problems.  First, I think you'll need the -p
cg.paddle bdd:true option to use BDDs; it might be failing because
this option is missing.  Also, you need to set the context and
possibly context-heap options, as context-sensitive analysis is
disabled by default.  Also, I don't think you want the
conf:cha-context option; by default, Paddle constructs a
context-sensitive call graph once context-sensitive analysis is
enabled.  The Paddle options are documented here:

http://www.sable.mcgill.ca/soot/tutorial/phase/phase.html#SECTION00043000000000000000

I'm not sure of the best way to use the context-sensitive call graph,
so hopefully someone else can answer that.

-Manu

On 3/26/06, Joe Qian <owqian at gmail.com> wrote:
> Hi everyone,
> I just try to use Paddle to obtain a context-sensitive call graph.
> When I run soot.Main() with (I use Paddle0.2, Jedd0.3 and ScableJBdd)
>
> -p cg.paddle enabled:true
> -p cg.paddle conf:cha-context
> -p cg.paddle backend:sable;
>
> the following problem occurs:
>
> ==================================================================
> Soot started on Sun Mar 26 21:53:58 CST 2006
> Unique table : weak 1031
> Pooling dynamic 1000000
> Cache kind none, size 1031, associativities 2
> java.lang.NullPointerException
> at
> soot.jimple.paddle.TradReachableMethods.<init>(TradReachableMethods.java:37)
> at soot.jimple.paddle.TradFactory.ReachableMethods(TradFactory.java:144)
> at soot.jimple.paddle.CHAContextConfig.setup(CHAContextConfig.java:39)
> at soot.jimple.paddle.PaddleScene.setup(PaddleScene.java:1308)
> at soot.jimple.paddle.PaddleTransformer.setup(PaddleTransformer.java:84)
> at
> soot.jimple.paddle.PaddleTransformer.internalTransform(PaddleTransformer.java:45)
> at soot.SceneTransformer.transform(SceneTransformer.java:39)
> at soot.jimple.paddle.PaddleHook.internalTransform(PaddleHook.java:43)
> at soot.SceneTransformer.transform(SceneTransformer.java:39)
> at soot.Transform.apply(Transform.java:89)
> at soot.RadioScenePack.internalApply(RadioScenePack.java:60)
> at
> soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:40)
> at soot.Pack.apply(Pack.java:110)
> at soot.PackManager.runWholeProgramPacks(PackManager.java:375)
> at soot.PackManager.runPacks(PackManager.java:321)
> at soot.Main.run(Main.java:203)
> at soot.Main.main(Main.java:146)
> ====================================================================
>
> Could any body give me some sujestion?
> i'm also not very clear about how to use a context sensitive call graph.
> Is there any example code to follow
>
> --
> Sincerely,
> Joe
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>


More information about the Soot-list mailing list