Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 03 Mar 2004 09:47:08 +0300
From:      Zajcev Evgeny <zevlg@yandex.ru>
To:        Robert Watson <rwatson@freebsd.org>
Cc:        hackers@freebsd.org
Subject:   Re: Looking for static analysis tool to generate call graphs
Message-ID:  <82brneh1g3.fsf@us.dmz.local>
In-Reply-To: <Pine.NEB.3.96L.1040302221117.17237B-100000@fledge.watson.org> (Robert Watson's message of "Tue, 2 Mar 2004 22:18:31 -0500 (EST)")
References:  <Pine.NEB.3.96L.1040302221117.17237B-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Robert Watson <rwatson@freebsd.org> writes:

> Well, using a scary combination of grep, awk, a long list of "omit this"
> regexp's, and prcc from cflow, I got the following: 
>
>     http://www.watson.org/~robert/freebsd/20040302-sockets.ps

Actually it looks kind a mess.  Maybe use dot's clustering or ranking
to organize callgraph a little?

like this:

Clustering output:

digraph cg {
	a -> b; b->c; a->c; c->d; a->d;

	subgraph "cluster_one.c" { label="one.c"; a; b;};
	subgraph "cluster_two.c" { label="two.c"; c; d;}
}

Layered output:

digraph cg {
	a -> b; b->c; a->c; c->d; a->d;

	{ rank = same; a; c; }
	{ rank = same; b; d; }
}

So soXXX functions may be with same rank, also some high level
functions such as `accept', `listen', `send', etc may have same rank,
so callgraph will look like subroutine was designed on paper.

Unfortunately there is no way in dot to use clustering and ranking for
same node :(.

-- 
lg



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?82brneh1g3.fsf>