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

时间:2011-10-26 15:04:08

标签: c graph static-analysis

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

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

4 个答案:

答案 0 :(得分:7)

Frama-C是一个开源静态分析框架,可以为C程序计算声音程序依赖关系图。其slicing plug-in使用生成的PDG。切片和PDG计算在邮件列表的February 2010中进行了讨论(来自jung,myung-jin及其答案的消息)。

您也可以查看NIST的Unravel或佐治亚理工学院Aristotle。卡尔斯鲁厄大学的Valsoft和洛约拉的Surgeon's Assistant也可能值得研究。

答案 1 :(得分:0)

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

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

这两种工具都是免费的。

答案 2 :(得分:0)

有一个名为cpp-depenencies的有前途的新工具。

它可以生成component依赖关系图(如下所示)以及class层次结构图(通过传递一个选项将每个源文件视为一个组件)。

enter image description here

答案 3 :(得分:0)

如果使用llvm生成pdg,则可以使用以下命令: https://bitbucket.org/psu_soslab/program-dependence-graph-in-llvm/src/master/