问题标签 [gcovr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
105 浏览

c++ - 为什么 GCOV 声称这条线不包括在内?

我最近升级到新版本的 gcc/g++/gcov,现在 gcov 的行为很奇怪。新版本声称某些代码行没有被旧版本覆盖。我设法将我的代码简化为这个最小的例子。

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

生成的.gcov文件包含:

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

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

我可以用 gcc8、gcc9 和 gcc10 重现这种行为。gcc7 的行为符合预期。

比较 gcc7/8 的编译器资源管理器:https ://godbolt.org/z/Te57s4WK8

0 投票
0 回答
40 浏览

c++ - GCOVR 处理所有文件,但随后显示“已收集 0 个文件的覆盖数据”

我在带有 gcovr 5.0 的 Win10 上使用 Cygwin GCC 11.2.0。我的 C 文件是使用 --coverage 标志编译的,并创建了 .gcno 文件。运行我的程序后,.gcda 文件也存在,如果我在 Eclipse 中使用 GCOV 扩展名打开它们,我会看到有效的覆盖率数据。但是当我使用命令运行 gcovr 时 gcovr -v -r X:/Path/to/my/Project .(此文件夹包含带有我的 .c 和 .h 文件的子文件夹)我看到以下输出

感谢 -v (详细)选项,我可以看到所有文件都已处理,例如

但它总是以Gathered coveraged data for 0 files. 我也可以让 gcovr 使用该选项生成一个 HTML 输出文件,--html -o output.html但这没有显示任何结果。

我的项目结构如下

.c 文件:X:\Project\Implementation\dev\Source_File_Folder

.o、.gcno、.gcda 文件:X:\Project\Verification\Test\VariantABC\Binaries\Obj_Folder

通话

给了我以下结果

如何成功运行 gcovr?

编辑 我现在添加了一个名为而不是 gcov 的脚本。它用 gcov 的参数列表中的斜杠替换所有反斜杠,然后调用 gcov。这是实现:

通过设置参数将此脚本与 gcovr 一起使用时,--gcov-executable我得到了不同但仍然不是所需的结果:

0 投票
1 回答
56 浏览

python - ImportError:没有名为 lxml 的模块,尽管已安装 lxml

我正在尝试在 virtualenv 中安装 gcovr 工具并且工具安装良好,但是在运行二进制文件时,我看到 lxml 警告,我该如何解决这个问题?

使用的命令:

我看到以下错误(添加部分日志):

编辑1:

我尝试安装 lxml,看起来 lxml 已经安装但没有出现在 virtualenv 中

0 投票
2 回答
21 浏览

linux - 如何为驱动程序(以太网驱动程序)配置 GCOV 以进行覆盖测试?

我正在尝试使用 GCOV 来测试设备驱动程序,例如:用 C 语言编写的以太网驱动程序。该驱动程序位于用户空间中,并且有很多内核空间调用。使用 Linux Ubuntu 机器 Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-96-generic x86_64)

在编译驱动程序代码时 - 目标文件(为每个 c 文件生成 .o 文件)并合并( .ko 文件)。main() 在我的理解中从启动代码开始。加载 (*.ko ) 文件后,需要对以太网设备进行功能测试,并使用稍后的覆盖率报告。

我对Linux的了解有限。我遇到的文章仅在用户空间中执行程序。

问题1

我不确定这样做的步骤是什么。请建议。

提前感谢您的帮助。