首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C代码调用图的生成

问C代码调用图的生成
EN

Stack Overflow用户
提问于 2012-07-26 13:22:14
回答 2查看 6.9K关注 0票数 8

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

任何可以对可以解析的文件生成调用图的工具都会很好。一个可用的图书馆会更好。

EN

回答 2

Stack Overflow用户

发布于 2012-07-26 15:05:06

还值得一提的是,优秀的GNU cflow

GNU cflow分析C源文件的集合,并打印一个图表,在程序中绘制控制流。 GNU cflow能够为C源生成直接流图和倒流图。另外,还可以生成交叉引用列表。实现了两种输出格式: POSIX和GNU (扩展)。 在分析之前,可以选择对输入文件进行预处理。

编辑

至于图书馆的要求。您可能希望“调整”output.c,而不是打印数据。内部流被组织成输出处理程序,所以我认为编写自己的处理程序已经可以做到这一点。不过,它还没开箱呢。

票数 3
EN

Stack Overflow用户

发布于 2012-07-26 14:56:00

把我的评论变成回答。

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

代码语言:javascript
复制
perl -ne '/^([^. \t#].*):/ and $f=$1;/call\s+([^*]\S*)/ and print "$f -> $1\n";' *.S

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

您可以省略正则表达式中的“不能以星号开头”部分,以获得间接调用的一些指示。您仍然无法知道在这一点上将调用哪些函数,但至少您会知道还有更多的事情需要知道。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11670260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档