如何为C程序生成程序依赖图?

use*_*814 9 c static-analysis graph

我想从C源代码生成程序依赖图(PDG).我找到了解释它是怎么做的论文,但都使用了商业CodeSurfer工具.

有没有免费工具可以做到这一点?

Pas*_*uoq 7

Frama-C是一个开源静态分析框架,可以为C程序计算合理的程序依赖关系图.它的切片插件使用最终的PDG.切片和PDG计算于20102月在邮件列表中进行了讨论(来自jung,myung-jin及其答案的消息).

你也可以看看NIST的Unravel,或佐治亚理工学院的亚里士多德.无论Valsoft在卡尔斯鲁厄大学和Loyola的外科医生的助手,也可能是值得研究的.


Tho*_*ews 2

Doxygen可以生成函数调用者和被调用者图,以及程序中使用的所有函数。这可能不完全是您正在寻找的内容,但它可以提供一些有用的数据。

SourceMonitor是一个度量工具,可以显示功能和程序的复杂性以及复杂性图。

这两种工具都是免费的。

  • “程序依赖关系图”是这样的图,其节点是语句并且其边代表依赖关系。它不是调用图(其节点是函数)。您可以在此处查看 PDG 的示例,但是在处理真正的编程语言(尤其是 C)时,细节决定成败,这在表示中表现出来。http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20100210/87fe9543/attachment-0001.png (2认同)