[Soot-list] Problems with soot call graph

Luca mitch_ing at yahoo.it
Wed Jun 22 15:39:22 EDT 2005


Hi, 
I've just upgaded Soot to the last version.
Now I have a problem building the call graph.
I'll report the code and the error message:
CODE:
// set soot options:
		Options.v().set_keep_line_number(true); //might be useful if you want to relate back to source code
		Options.v().setPhaseOption("jb", "use-original-names:true");
		Options.v().setPhaseOption("cg", "safe-forname:false");
		Options.v().setPhaseOption("cg", "context:1cfa"); //you can set context-sensitivity of call graph with this (more time consuming)
		Options.v().setPhaseOption( "cg", "verbose:true" );
		Options.v().set_allow_phantom_refs(false);  //if call graph is still slow, you could play around with this setting
		Options.v().set_whole_program(true);
		Options.v().set_app(true);
		firstclass.setApplicationClass();
		
		Vector temp = new Vector();
		temp.add(ep_metod);
		Scene.v().setEntryPoints(temp);
		
		
		new CallGraphBuilder().build();

Some remarks about the code:
I want to build a partial call graph ( i want to buld call graph only for some user defined classes specified in the vector temp).
this code worked with an old version of Soot (2.1.0).
Now i'm going to report the error:

Warning: using incomplete callgraph containing only application classes.
Exception in thread "main" java.lang.NullPointerException
	at soot.AnySubType.v(AnySubType.java:44)
	at soot.toolkits.exceptions.ThrowableSet$Manager.<init>(ThrowableSet.java:239)
	at soot.Singletons.soot_toolkits_exceptions_ThrowableSet_Manager(Singletons.java:1005)
	at soot.toolkits.exceptions.ThrowableSet$Manager.v(ThrowableSet.java:274)
	at soot.toolkits.exceptions.PedanticThrowAnalysis.mightThrow(PedanticThrowAnalysis.java:68)
	at soot.toolkits.graph.ExceptionalUnitGraph.getExceptionDests(ExceptionalUnitGraph.java:803)
	at soot.toolkits.graph.ExceptionalUnitGraph.buildHeadsAndTails(ExceptionalUnitGraph.java:766)
	at soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:283)
	at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:148)
	at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:180)
	at soot.toolkits.scalar.LocalSplitter.internalTransform(LocalSplitter.java:78)
	at soot.BodyTransformer.transform(BodyTransformer.java:51)
	at soot.Transform.apply(Transform.java:104)
	at soot.JimpleBodyPack.applyPhaseOptions(JimpleBodyPack.java:61)
	at soot.JimpleBodyPack.internalApply(JimpleBodyPack.java:93)
	at soot.Pack.apply(Pack.java:120)
	at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:115)
	at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:80)
	at soot.SootMethod.retrieveActiveBody(SootMethod.java:304)
	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:94)
	at graphs.CallGAnalysis.build(CallGAnalysis.java:112)
	at graphs.CallGAnalysis.getMethodList(CallGAnalysis.java:131)
	at CallGraphStub.main(CallGraphStub.java:110)

This is a NullPointerexception raised when I try to to call  the Soot CallGraphBuilder.build().
Can anyone tell me more about this problem?

Many thanks
Luca Cavallaro


More information about the Soot-list mailing list