llvm的-view-cfg
程序中有opt
选项(doc),使我可以通过dot
程序查看控制流图。但是CFG太大了,无法从圆点渲染为后记。我知道 xvcg
utiity能够显示包括CFG在内的复杂图形(其man表示“VCG工具-编译器图形的可视化”)。
那么,如何以xvcg格式输出llvm的CFG?
最佳答案
从LLVM直接生成.vcg文件将需要对GraphWriter进行大量修改,这是GraphViz特有的。相反,在我看来,最直接的解决方案是保存一个点文件(通过-dot-cfg
而不是-view-cfg
),然后使用Graph-Easy之类的文件进行转换。从其文档(重点是我的):
顺便说一句,如果您想获取很多图形并且更喜欢在生成许多点文件之前先查看它们,请考虑使用点查看器,该查看器还可以保存文件,例如my fork of xdot.py-或更好的是,修改xdot.py
因此它知道如何使用Graph-Easy本身以.vcg格式保存。
Graph-Easy的另一种替代方法似乎是dot2gdl。
关于llvm - 在xvcg中显示来自llvm的CFG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17062495/