[Soot-list] Callgraph exception

John Chaitanya Kati johnkati at cse.iitb.ac.in
Thu Feb 15 21:06:31 EST 2007


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...


More information about the Soot-list mailing list