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

Checking the code generated implicitly by the C++ compiler

本文关键字:代码 c++ 编译器 检查      更新时间:2023-10-16

是否有一种方法(g++选项?)来检查c++编译器隐式生成的代码(例如所有默认构造函数/析构函数)?

拥有生成的c++代码是理想的,但至少汇编是好的。使用:

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

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

我认为选项-fdump-tree-original是你所能得到的最接近的。不幸的是,它会显示你自己的代码和自动生成的代码,但它不会标记哪个是哪个。然而,它是最易读的GCC转储文件,它显示了在执行任何优化之前生成的代码。

另一种选择是使用-fdump-translation-unit。这将创建一个包含所有内容的原始转储树。编译器组成的节点将被标记为"人工"。然而,这种格式对人类来说并不容易阅读,即使对于一个微不足道的源文件,也需要费力地阅读很多内容。为了从中获得有用的信息,您可能需要编写一个程序来读取它,然后遍历树以找到您感兴趣的节点,并将它们以更可读的格式打印出来。