检查C ++编译器隐式生成的代码

时间:2014-07-21 05:01:03

标签: c++ c++11 compiler-construction

有没有办法(g ++选项?)来检查C ++编译器隐式生成的代码(例如所有默认的构造函数/析构函数)?

生成的C ++代码是理想的,但至少组装会很好。使用:

g++ -S -g -O0 <file.cpp>

没有给我任何带有生成的构造函数/析构函数的标签。

1 个答案:

答案 0 :(得分:6)

我认为-fdump-tree-original选项尽可能接近。不幸的是,它会显示您自己的代码和自动生成的代码,但它不会标记哪个是哪个。然而,它是GCC转储中最具可读性的,它会在执行任何优化之前显示生成的代码。

另一种选择是使用-fdump-translation-unit。这会创建一个树的原始转储,其中包含所有内容。编译器组成的节点将标记为&#34; artificial&#34;。然而,这种格式对于人类来说并不容易阅读,并且即使对于一个简单的源文件,其中也有很多内容。为了从中获取任何有用的信息,您可能需要编写一个程序来读取它,然后遍历树以找到您感兴趣的节点并以更易读的格式打印它们。 / p>