4

我正在寻找用 C++ 编写的源代码的控制流图生成器。你知道任何开源的静态生成器吗?

我想在我的毕业项目中使用它来生成控制流图并突出显示在分析应用程序执行期间已执行的路径。

我已经编写了整个引擎来记录执行的行。

感谢您的所有回答。

4

2 回答 2

3

您可以使用clangllvm

首先将您的程序编译为 llvm ir

clang++ -emit-llvm -S prog.cpp -o prog.ll

然后用于opt生成控制流图。

opt --dot-cfg prog.ll

这会输出一个点文件,可以使用graphviz查看。在 Mac 上,您可以执行brew install graphviz并运行以下命令来生成 png。

dot -Tpng cfg.main.dot -o main.png

您应该为程序中的每个函数都有一个点文件,以便编写脚本自动将它们全部转换为 png 可能会更容易

于 2018-03-22T16:59:01.690 回答
1

CoFlo 是一个免费和开源的源代码分析工具,它从 C 和 C++ 源代码生成和分析控制流图。

于 2017-09-08T04:49:13.323 回答