[Soot-list] Questions about profiler2 example

Kelvin Tian kevinn.tian at gmail.com
Thu Jul 16 13:30:26 EDT 2009


Dear Eric,

   I modified the code as you said,  adding  " SootClass counterClass =
Scene.v().getSootClass("MyCounter");"  and
"Scene.v().addBasicClass("MyCounter");".
But the same error still happens as below,
Exception in thread "main" java.lang.RuntimeException: This operation
requires resolving level SIGNATURES but MyCounter is at resolving level
HIERARCHY
If you are extending Soot, try to add the following call before calling
soot.Main.main(..):
Scene.v().addBasicClass(MyCounter,SIGNATURES);

Is it supposed to be working now?  Or do I need to add a signaure level in
addBasicClass method? Thanks for any suggestions and have a good day!



--
Best regards,
Kelvin


On Thu, Jul 16, 2009 at 11:59 AM, Eric Bodden <eric.bodden at mail.mcgill.ca>wrote:

> Hi Kelvin.
>
> In general it should be possible to create multiple counters that way.
> The error that you see has nothing to do with whether you use one
> counter or many. It rather has to do with using loadClassAndSupport.
>
> Instead of using loadClassAndSupport("X") I would suggest to...
>
> 1.) add the following call just before the call to soot.Main.main(args):
>
> Scene.v().addBasicClass("X");
>
> 2.) Then within the internalTransform method, simply access the class via:
>
> Scene.v().getClass("X");
>
> Eric
>
> 2009/7/16 Kelvin Tian <kevinn.tian at gmail.com>:
> >     I'm using Soot to do some instrumentation, and I've some questions
> > related to the profiler2 example, under link
> > http://www.sable.mcgill.ca/soot/tutorial/profiler2/index.html ?
> >  In this example, I see it use a counter class to add a counter to count
> the
> > number of InvokeStatic statements, and there's only one counter.  If I
> want
> > to create several counters to get different profiling information, can I
> > create several instances of counter class and use each instance to count
> > different things?
> > I tried to do that, coding similarly like below,
> > (ie:
> >    SootClass counter1 =  Scene.v().loadClassAndSupport("MyCounter");
> >    increaseCounter1 = counter1.getMethod("void increase(int)");
> >    .....
> >    SootClass counter2 =  Scene.v().loadClassAndSupport("MyCounter");
> >    increaseCounter2 = counter2.getMethod("void increase(int)");
> >    ...
> > )
> > but I got a lot of runtime errors like this: " Exception in thread "main"
> > java.lang.RuntimeException: This operation requires resolving level
> > SIGNATURES but MyCounter is at resolving level HIERARCHY  If you are
> > extending Soot, try to add the following call before calling
> soot.Main.main
> > "
> >
> > So I just wonder if this is applicable to create different instances of
> > counter class, and if not, are there any better ways to create more than
> one
> > counter? Or do I have to instrument jimple code to manually add counter
> code
> > for each counter I want?  Thanks so much for answers!
> >
> >
> >
> > --
> > Best regards,
> > Kelvin
> >
> > _______________________________________________
> > 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, Québec, Canada
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20090716/52eb2812/attachment.html 


More information about the Soot-list mailing list