目录
1、cflow 简介
cflow 工具用于分析 C 语言实现的源文件集并输出各个函数之间的依赖关系图。cflow 可以生成两种类型的图:正向图和逆向图。正向图从 main()函数开始,递归显示 main()函数调用的所有函数。相反,逆向图是一个子图的集合,使用递归命令时,为每个函数列出它的调用者。
除了这两种输出模式,cflow 也可以为输入文件中的所有遇到的符号生成一个交叉引用列表。
该程序还提供了对将出现在输出中出现的符号的详细控制,允许忽略用户不感兴趣的符号。详细的输出格式也是可配置的。
2、使用 cflow 分析程序的简要方法
我们先从一个例子开始熟悉 GNU cflow 的用法。假设你已经有了一个 whoami命令的简单实现,并且你想获得它的函数依赖关系图。下面的是程序:
#include <pwd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
int
who_am_i (void)
{
struct passwd *pw;
char *user = NULL;
pw = getpwuid (geteuid ());
if (pw)
user = pw->pw_name;
else if ((user = getenv ("USER")) == NULL)
{
fprintf (stderr, "I don't know!\n");
return 1;
}
printf ("%s\n", user);
return 0;
}
int
main (int argc, char **argv)
{
if (argc > 1)
{
fprintf (std