llvm的opt
程序中有-view-cfg
选项(doc),它使我能够通过dot查看控制流图
程序。但 CFG 太大,无法从点渲染为附记。我知道有xvcg
utiity能够显示复杂的图形,包括 CFG(及其 man 表示“VCG 工具 - 编译器图形的可视化”)。
那么,如何以xvcg格式输出llvm的CFG呢?
最佳答案
直接从 LLVM 生成 .vcg 文件需要对 GraphWriter 进行大量修改,这是 GraphViz 特有的。相反,在我看来,最直接的解决方案是保存点文件(通过 -dot-cfg
而不是 -view-cfg
),然后转换它,使用类似Graph-Easy的东西。从它的文档(强调我的):
It understands the following formats as input:
- Graph::Easy http://bloodgate.com/perl/graph/manual/
- DOT http://www.graphviz.org/
- VCG http://rw4.cs.uni-sb.de/~sander/html/gsvcg1.html
- GDL http://www.aisee.com/
The output can be a dump of the graph in one of the following formats:
顺便说一句,如果您想要获取大量图表并希望在生成大量点文件之前查看它们,请考虑使用点查看器,它还允许您保存文件,例如 my fork of xdot.py - 或者更好的是,修改 xdot.py
以便它知道如何使用 Graph-Easy 本身以 .vcg 格式保存。
Graph-Easy 的另一个替代方案似乎是 dot2gdl .
关于llvm - 在 xvcg 中显示来自 llvm 的 CFG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062495/