C++ 代码的控制流图生成器

Luk*_*upa 10 c++ control-flow-graph

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

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

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

感谢您的所有回答。

小智 6

您可以使用clangllvm

首先将你的程序编译到llvm ir

clang++ -emit-llvm -S prog.cpp -o prog.ll
Run Code Online (Sandbox Code Playgroud)

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

opt --dot-cfg prog.ll
Run Code Online (Sandbox Code Playgroud)

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

dot -Tpng cfg.main.dot -o main.png
Run Code Online (Sandbox Code Playgroud)

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


小智 0

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