atree runs a program through GDB. It sets breakpoints on all
functions and makes a log of all the functions that got called. The
log contains the arguments and return values of the functions. This
log is then turned into a tree — a node in the tree is a
function call and its children are the functions that it called, in
order.
This tree is called an activation tree (each execution of a function is called an activation).
Example:
Suppose your program is this:
void bar(char c);
void
foo(int x)
{
if(x==1)
bar('A');
}
void
bar(char c)
{
char f = c+1;
}
int
main()
{
int i;
for(i=0; i<3; ++i)
foo(i);
return 0;
}
Then, by running atree on it's executable, you get this output:
main() \_ foo(x=0) \_ foo(x=1) | \_ bar(c=65 'A') \_ foo(x=2)
atree is incomplete.
There are no file releases yet, but please get atree from
the CVS if you wish to try it out:
cvs -d:pserver:anonymous@atree.cvs.sourceforge.net:/cvsroot/atree login [hit enter at the password prompt] cvs -z3 -d:pserver:anonymous@atree.cvs.sourceforge.net:/cvsroot/atree checkout atreeOr you can look at the code using the web interface to the CVS.
| Soam Vasani <firstnamelastname*at*gmail.com> |
|