标签: gcov

为什么 GCOV 声称这条线路没有被覆盖?

我最近升级到了新版本的 gcc/g++/gcov,现在 gcov 的行为很奇怪。新版本声称未涵盖旧版本中涵盖的某些代码行。我设法将我的代码减少到这个最小的示例。

#include <memory>
using namespace std;
struct S {};

int main() {
    unique_ptr<S> s;
    s = make_unique<S>();
}
Run Code Online (Sandbox Code Playgroud)

然后我使用 编译此文件g++ -O0 -Wall -Wextra -Werror --std=c++17 --coverage,运行结果a.out,然后运行gcov

生成的.gcov文件包含:

    -:    0:Runs:1
    -:    1:#include <memory>
    -:    2:using namespace std;
    -:    3:struct S {};
    -:    4:
    1:    5:int main() {
#####:    6:    unique_ptr<S> s;
    1:    7:    s = make_unique<S>();
    1:    8:}
Run Code Online (Sandbox Code Playgroud)

这与 gcov 的旧版本不同,旧版本声称第 6 行被命中了 2 次。

为什么 gcov 认为第 6 行没有被覆盖?难道我做错了什么? …

c++ code-coverage g++ gcov gcovr

2
推荐指数
1
解决办法
2286
查看次数

GCOVR 在 MAC 中给出空结果百分之零

我的文件夹中有 .gcda 和 .gcno 文件,我从中运行以下命令。

$ gcovr -r .

结果如下 在此输入图像描述 如果我在 gcda 文件上运行 gcov,我会得到正确的覆盖率值。

macos code-coverage gcov gcovr

1
推荐指数
1
解决办法
2075
查看次数

如何将 lcov 与 `--gcov-tool` 标志一起使用?

我想使用与系统默认不同的 gcc 来构建项目。因此我需要为 lcov 提供正确的 gcov-tool 版本。不幸的是,该--gcov-tool标志对我不起作用。即使 lcov 应该默认的版本也不行。

示例运行:

############## extract test coverage  ##############
g++-8 (Debian 8.3.0-6) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gcov-tool-8 (Debian 8.3.0-6) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. …
Run Code Online (Sandbox Code Playgroud)

c++ code-coverage gcov lcov travis-ci

1
推荐指数
1
解决办法
3830
查看次数

GCOV:为什么sample.gcda和sample.gcno可能不同

起初我接受消息 sample.gcda:stamp mismatch with graph file

  1. 遵守编译和运行的顺序
  2. hexdump -e '"%x\n"' -s8 -n4 sample.gcno-> aaa1aaaa- hexdump -e '"%x\n"' -s8 -n4 sample.gcda> bbb2bbbb

gcov

0
推荐指数
1
解决办法
3409
查看次数

标签 统计

gcov ×4

code-coverage ×3

c++ ×2

gcovr ×2

g++ ×1

lcov ×1

macos ×1

travis-ci ×1