gpt4 book ai didi

c++ - gcov 函数未执行,但行已执行

转载 作者:行者123 更新时间:2023-11-28 02:12:41 25 4
gpt4 key购买 nike

我一直在使用 gcov 检查代码覆盖率。我现在得到一个奇怪的结果,一些函数被列为未执行但函数中的行被列为已执行。

lcov 输出:

  13           0 :     f<double>& operator*=(f<double>& lhs, const double& rhs)
14 : {
15 9 : // Some code...
16 0 : return lhs;
17 : }

gcov 输出:

#####:   13:    f<double>& operator*=(f<double>& lhs, const double& rhs)
-: 14: {
9: 15: // Some code...
#####: 16: return lhs;
-: 17: }

如何在行执行时将函数列为未执行?这可能是 GCC 优化的产物吗?

编辑 1:

G++/gcov 版本:4.9.2

lcov 版本:1.11

编辑 2:

-O2 配合会产生奇怪的行为。但是,使用 -O1 进行编译会将 #### 更改为 9

最佳答案

您应该在未优化的代码上运行 gcov。这将为您提供输出,可能由 lcov 解释,这将向您保证所有行都已运行。

然后您可以针对发布版本进行优化编译。

关于c++ - gcov 函数未执行,但行已执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com