标题说得很好。我有一个使用Makefile的庞大项目。如何使用GCC进行项目范围的调试转储(例如,-fdump-tree-gimple)?
答案 0 :(得分:1)
您必须传递-fdump-tree-gimple
(实际上将任何pass-name而不是gimple
,甚至all
转储所有树遍)到每个编译器执行的编译字符串(即每次,您在源文件上调用gcc或使用-c
选项调用gcc。在工作目录(通常是构建文件夹)中将显示任何源文件名的格式filename.c.XXX.gimple
转储(XXX是像003这样的传递号,取决于gcc版本)。此外,您可能希望指定-dumpdir
来收集单个转储目录中的所有转储,这可能很方便以避免混乱。
你将如何在makefile中完成 - 由你决定。您可以将其添加到$CFLAGS
(最常见的解决方案,因为转储 是编译标志的一部分),或者创建特殊变量并传递它,或者在makefile中对其进行硬编码。 / p>
如果使用lto构建项目,则必须在第二个链接阶段传递这些标记(即添加到LDFLAGS左右)。