[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: generating CallGraph



Strange, your message is dated July 9th, but I received it August 12th.

When Soot first reads in bytecode, it uses the special type .unknown as
the declared type for all variables. Normally, the type assigner (phase
jb.tr) infers declared types for them. The call graph construction
requires these declared types, so it is dying because it's finding a
variable whose type is still .unknown.

To debug this, it would be helpful to know whether the same thing
happens when running Soot itself rather than your application (perhaps
you application is somehow inadvertently disabling the type assigner),
and also in which method it is finding the unknown type. You can find
this out by putting a println in the method CallGraphBuilder.build
that appears in your stack trace.

Ondrej

On Fri, Jul 09, 2004 at 04:07:26PM +0200, Marco Bakera wrote:
> Hey,
> 
> i tried to get a call graph from a program. So I tried the '-w' option
> which should create one. But after i did this i get the following error:
> 
> Exception in thread "main" java.lang.RuntimeException: Unhandled type
> .unknown
> 	at soot.FastHierarchy.canStoreType(FastHierarchy.java:211)
> 	at soot.jimple.toolkits.callgraph.VirtualCalls.resolve(VirtualCalls.java:83)
> 	at
> soot.jimple.toolkits.callgraph.VirtualCalls.resolve(VirtualCalls.java:124)
> 	at
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.addType(OnFlyCallGraphBuilder.java:100)
> 	at
> soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:104)
> 	at
> soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(CHATransformer.java:43)
> 	at soot.SceneTransformer.transform(SceneTransformer.java:39)
> 	at soot.Transform.apply(Transform.java:79)
> 	at soot.RadioScenePack.internalApply(RadioScenePack.java:60)
> 	at
> soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:36)
> 	at soot.Pack.apply(Pack.java:107)
> 	at soot.PackManager.runWholeProgramPacks(PackManager.java:292)
> 	at soot.PackManager.runPacks(PackManager.java:275)
> 	at soot.Main.run(Main.java:180)
> 	at soot.Main.main(Main.java:154)
> 	at de.unido.cs.ls5.vidoc.soot.pdce.PDCEDriver.main(PDCEDriver.java:96)
> 
> 
> So is there a way to get the callgraph in a simple way?
> 
> thanks for help and greetings from germany. :)
> 
> --
> /X\arco                              ICQ#59397823
>               . .
> ---------oOOo-(_)-oOOo--------> www.bakera.de <--
>