我认为问题的标题是不言自明的,我想将 gcc 生成的抽象语法树转储到 .dot 文件(由 Graphviz 生成的文件)中,因为然后我想在 .png 文件或类似文件中查看它。有什么办法可以做到这一点吗?
最佳答案
有两种方法,都包含两个步骤
使用 GCC 内部 vcg 支持
使用 vcg 转储编译代码(例如 test.c)
gcc -fdump-tree-vcg -g test.c
使用任何第三方工具从 vcg 获取点输出
graph-easy test.c.006t.vcg --as_dot
使用原始转储进行编译,然后使用一些脚本对其进行预处理以形成点文件(如 this useful article 中)
这两种方法都有各自的优点和缺点——第一种方法在 gimple 翻译之前实际上只能得到 AST 的一个转储,但这很容易。使用第二个,您可以将任何原始转储转换为点格式,但您必须支持脚本,这是开销。
更喜欢什么——取决于你自己的选择。
<小时/>UPD:时代在变。 gcc 4.8.2 的全新选项可以立即生成点文件。只需提供:
gcc test.c -fdump-tree-all-graph
您将获得大量已格式化的点文件:
test.c.008t.lower.dot
test.c.012t.cfg.dot
test.c.016t.ssa.dot
... etc ...
请务必使用带有此选项的新版本 GCC。
关于gcc - 如何将 gcc 生成的抽象语法树转储到 .dot 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800230/