0

标题说得很好。我有一个使用 Makefile 的大型项目。如何使用 GCC 进行项目范围的调试转储(例如 -fdump-tree-gimple)?

4

1 回答 1

1

对于每次编译器执行(即每次,您在源文件上或使用选项调用 gcc),您必须传递-fdump-tree-gimple(实际上放置任何传递名称而不是gimple,甚至转储所有树传递)到编译字符串。任何源文件名的形式转储都会出现在工作目录(通常是构建文件夹)中(XXX 是像 003 这样的密码,取决于 gcc 版本)。此外,您可能希望指定在单个转储目录中收集所有转储,这可能很方便避免混乱。all-cfilename.c.XXX.gimple-dumpdir

您将如何在您的 makefile 中执行此操作 - 由您决定。您可以将其添加到$CFLAGS(最常见的解决方案,因为转储编译标志的一部分),或者创建特殊变量并将其传递,或者在 makefile 中对其进行硬编码。

如果您使用 lto 构建项目,则必须在第二个链接阶段也传递这些标志(即添加到 LDFLAGS 左右)。

于 2013-02-06T12:52:44.590 回答