6

我能够使用 gnu - cflow 生成一个文件的调用图,但我无法找出如何使用 cflow 生成多个文件的调用图。

我试过以下

  • cflow test.c,你好.c

    它为 test.c 生成调用图,而不是为 hello.c 创建它

  • cflow test.c 你好.c

    它为 hello.c 生成调用图,而不是为 test.c 创建它

我不知道如何将多个文件传递给 cflow。

对此有任何想法吗?

你好ç

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);
     unused_function();
     return 0;
 }

 int
 main (int argc, char **argv)
 {
     if (argc > 1)
     {
         fprintf (stderr, "usage: whoami\n");
         return 1;
     }
     return who_am_i ();
 }
 void unused_function()
 {
     printf();
     error1();
     printf();
 }
 void error1()
 {
     error2();
 }
 void error2()
 {

 }

测试.c

int tests()
{ return 0;}
4

2 回答 2

2
  • cflow test.c 你好.c

实际上上面的语句是正确的,并且 tests() 没有出现在调用图中,因为它从未被调用过。

@AndreasGrapentin 给出的答案

于 2013-03-07T12:25:56.503 回答
2

另一个方便的命令是:

cflow *.c

注意:
此命令将忽略所有子目录中的 C 源文件。

参考:
GNU cflow 手册:第 6 章-控制符号类型

为了使 cflow 能够处理此类声明,请将 __P 声明为包装器,例如:

cflow --symbol __P:wrapper *.c

于 2017-06-07T14:35:00.207 回答