cflow——生成C 语言流程图的工具

'GNU cflow' analyzes a collection of C source files and prints a graph charting control flow within the program. It can produce both direct and inverted flowgraphs for C sources, or optionally generate a cross-reference listing. It implements either POSIX or GNU (extended) output formats. Input files can optionally be preprocessed before analyzing. The package also provides an Emacs major mode, so users can examine the produced flowcharts in Emacs.

An example to use cflow

source code:


  /* whoami.c - a simple implementation of whoami utility */
     #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 (stderr, "usage: whoami\n");
           return 1;
         }
       return who_am_i ();
     }

Running cflow produces the following output:

     $ cflow whoami.c
     main() <int main (int argc,char **argv) at whoami.c:26>:
         fprintf()
         who_am_i() <int who_am_i (void) at whoami.c:8>:
             getpwuid()
             geteuid()
             getenv()
             fprintf()

printf()


本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2010/03/09/1681999.html,如需转载请自行联系原作者


上一篇:H3C V7 AC https页面无法重定向问题处理经验总结


下一篇:ATEC倒计时26天|智能运营如何助力嘉实基金财富号?(内赠门票)