[Soot-list] Newbie's question

Chris Pickett chris.pickett at mail.mcgill.ca
Tue Apr 18 01:52:59 EDT 2006


On Mon, April 17, 2006 11:34 pm, Sunny wrote:
> Hi,
>
>
> I am a newbie in soot. Could someone recommend me some
> tutorials/introductions on what soot does and/or examples on how to do
> that?

There are some tutorials and API docs linked from the Soot homepage.

http://www.sable.mcgill.ca/soot/

(see the "Resources" section).
>
> I am looking for an appropriate tool to support the implementation of my
> project. The project is based on Eclipse 3.0 and requires the ability to
> monitor the runtime execution of a java program and to dynamically build
> an object graph, whose edges represent the runtime access/reference
> relationships between objects.
>
> Basically my monitoring program needs to be notified when an object
> field, a local variable, or a parameter is write or read. Also I would
> like to know something like the entry/exit points of a method call ...
>
> I used to use AspectJ to implement my project. But unfortunately, AspectJ
>  does not support the read/write join points for local variables, which
> are essential to the accuracy of the object graph. Can Soot do all of
> those? I would much appreciate it if you can recommend me some
> documentation that best suits my needs.

Soot is an ahead-of-time analysis framework.  It sounds like you want
something that works with a Java runtime.  Even though it might not be
directly related, some people here have also done work like that, so you
should see the following papers:

Sokhom Pheng and Clark Verbrugge. "Dynamic Shape and Data Structure
Analysis in Java." Sable Technical Report 2005-3. October 2005

Bruno Dufour, Christopher Goard, Laurie Hendren, Oege de Moor, Ganesh
Sittampalam and Clark Verbrugge. "Measuring the Dynamic Behaviour of
AspectJ Programs." in OOPSLA'04. October 2004.

Bruno Dufour, Karel Driesen, Laurie Hendren, and Clark Verbrugge. "Dynamic
Metrics for Java." in OOPSLA'03. October 2003.

They can be found here:

http://www.sable.mcgill.ca/~clump/research.html

(note: I am linking to Clark's webpage because the Sable publications page
is missing the OOPSLA'04 paper).

Probably you want to look at the JVMTI and see if it gives you what you
want.  If it doesn't, in particular because of the need to look at local
variables, then I would recommend instrumenting a VM such as SableVM.  In
fact, since instrumenting SableVM is so easy, I would almost recommend
this over messing around with the JVMTI---what you lose here is
interoperability with other VMs.

On the other hand, you could try extending `abc', the Sable group's
AspectJ compiler, to support the instrumentation you need.  Note that abc
uses Soot as a back-end.

http://www.aspectbench.org

I am not really deeply familiar with any of this research, just acting as
list secretary here... it strikes me that there are several different ways
to approach your problem.

Cheers,
Chris

> Thank you!
>
>
> Sunny
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>




More information about the Soot-list mailing list