[Soot-list] Callgraph exception

Eric Bodden eric.bodden at mail.mcgill.ca
Fri Feb 16 08:43:46 EST 2007


As mentioned 2 days ago on this list, you need to call...

Scene.v().loadBasicClasses();
Scene.v().loadNecessaryClasses();

On 2/15/07, John Chaitanya Kati <johnkati at cse.iitb.ac.in> wrote:
> Hi,
>    Can anyone help me out in this exception. I tried looking at the lists
> but didnt find answer.
>
> [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.RuntimeException: This operation
> requires resolving level BODIES but java.lang.System is at resolving level
> SIGNATURES
>     at soot.SootClass.checkLevel(int) (Unknown Source)
>     at soot.SootMethod.retrieveActiveBody() (Unknown Source)
>     at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(soot.SootMethod)
> (Unknown Source)
>     at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables()
> (Unknown Source)
>     at soot.jimple.toolkits.callgraph.CallGraphBuilder.build() (Unknown
> Source)
>     at
> soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(java.lang.String,
> java.util.Map) (Unknown Source)
>     at soot.SceneTransformer.transform(java.lang.String, java.util.Map)
> (Unknown Source)
>     at soot.Transform.apply() (Unknown Source)
>     at soot.RadioScenePack.internalApply() (Unknown Source)
>     at soot.jimple.toolkits.callgraph.CallGraphPack.internalApply()
> (Unknown Source)
>     at soot.Pack.apply() (Unknown Source)
>     at soot.PackManager.runWholeProgramPacks() (Unknown Source)
>     at soot.PackManager.runPacks() (Unknown Source)
>     at soot.Main.run(java.lang.String[]) (Unknown Source)
>     at soot.Main.main(java.lang.String[]) (Unknown Source)
>
> The code which i found in some posting is this
>
> import soot.*;
> import soot.jimple.toolkits.callgraph.CallGraph;
>
> public class cg
> {
>
>         public static void main(String args[]) throws Exception
>         {
>                 String strClass = "HelloWorld";
>                 SootClass sootClass = Scene.v().loadClassAndSupport(strClass);
>                 System.out.println("Number of methods in " + sootClass.getName() + ": " + sootClass.getMethodCount());
>                 String[] opts = {"-w" , strClass};
>                 System.out.println("Set Application classes");
>                 sootClass.setApplicationClass();
>                 Scene.v().setMainClass(sootClass);
>                 Main.main(opts);
>                 CallGraph cg = Scene.v().getCallGraph();
>                 if(cg==null)
>                 {
>                 System.out.println("Call graph is equal to null,exiting!");
>                 }
>                 else
>                 {
>                         System.out.println("Call graph is non null");
>                 }
>         }
> }
>
>
>
> --
> Thanks in advance
> John
> Like a rose trampled on the ground, you took the fall and thought of me...
> _______________________________________________
> 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