C++ 编译器在代码覆盖率中生成的代码

C++ 编译器在代码覆盖率中生成的代码,c++,code-coverage,C++,Code Coverage,我正在使用g++编译器在Linux上使用英特尔代码覆盖工具。对于一个特定的类,coverage工具显示的函数比源代码中实际存在的函数多2/3 这些额外的功能是什么?它们是编译器生成的函数吗 我将头文件排除在代码覆盖范围之外。 我的类很简单,有空的ctor和dtor 我猜下面的函数是由编译器生成的 复制构造函数 赋值运算符 宏(在我的情况下不是) 信号插槽连接机制(例如,在Qt moc编译器中生成这些机制) 这(与GDB调试有关)解释了为什么会看到“额外”构造函数 gcc为构造函数生成两个不同的函

我正在使用g++编译器在Linux上使用英特尔代码覆盖工具。对于一个特定的类,coverage工具显示的函数比源代码中实际存在的函数多2/3

这些额外的功能是什么?它们是编译器生成的函数吗

我将头文件排除在代码覆盖范围之外。 我的类很简单,有空的ctor和dtor

我猜下面的函数是由编译器生成的

  • 复制构造函数
  • 赋值运算符
  • 宏(在我的情况下不是)
  • 信号插槽连接机制(例如,在Qt moc编译器中生成这些机制)
  • 这(与GDB调试有关)解释了为什么会看到“额外”构造函数

    gcc为构造函数生成两个不同的函数体。一个是构造整个对象(包括所有基)的常规对象。另一个构建了除虚拟基类之外的所有东西。事实上,gcc会同时发出两个构造函数,即使对于根本没有虚拟基的类也是如此

    这(与GDB调试有关)解释了为什么会看到“额外”构造函数

    gcc为构造函数生成两个不同的函数体。一个是构造整个对象(包括所有基)的常规对象。另一个构建了除虚拟基类之外的所有东西。事实上,gcc会同时发出两个构造函数,即使对于根本没有虚拟基的类也是如此


    给出一些您看到的函数名示例可能会很有用…I 1/2函数带有_zn符号连接到向量。但有时我看不到这些额外的报告函数。我在想类似的东西——“对于yax类,我看到了以下额外的函数”提供完整函数名列表,最好是类声明。给出一些您看到的函数名示例可能会很有用…I 1/2函数带有_zn符号连接到ctor。但有时我看不到这些额外报告的函数,我在想类似这样的东西——“对于类yax,我看到了以下额外的函数”,以及完整的函数名列表,最好是类声明。