生成C代码的调用图

cip*_*her 7 c parsing doxygen clang call-graph

我正在编写一个工具,我需要为一些C项目生成调用图.我能够使用clang生成一个文件的调用图,但是我无法找到如何在整个项目中生成包含数十个头文件和源文件的调用图.

任何可以生成可解析文件的调用图的工具都可以.一个可用的库会更好.

MvG*_*MvG 2

将我的评论变成答案。

\n\n

您可以使用脚本查看程序集输出和处理过程。假设 Linux 上有 gcc,您可以将-S标志传递给gcc并使用如下所示的方式处理结果:

\n\n
perl -ne \'/^([^. \\t#].*):/ and $f=$1;/call\\s+([^*]\\S*)/ and print "$f -> $1\\n";\' *.S\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将为每个静态调用提供一行,包含调用函数和被调用函数。您可以在其周围添加一些样板并将结果提供给dot,或者您想要用它做的任何事情。

\n\n

您可以省略正则表达式的 \xe2\x80\x9cm 不得以星号 \xe2\x80\x9d 部分开头,以获得间接调用的一些指示。您仍然无法知道此时将调用哪些函数,但至少您会知道还有更多东西需要了解。

\n

  • @IraBaxter,给我*任何*解决方案,声称可以处理间接函数调用,而无需*运行*应用程序并记录实际调用,我将编写一个具有工具无法预测的调用的应用程序。C 指针是黑魔法,你可以用它们做任何事情。 (3认同)