问题标签 [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.
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
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
我得到了不同但仍然不是所需的结果:
python - ImportError:没有名为 lxml 的模块,尽管已安装 lxml
我正在尝试在 virtualenv 中安装 gcovr 工具并且工具安装良好,但是在运行二进制文件时,我看到 lxml 警告,我该如何解决这个问题?
使用的命令:
我看到以下错误(添加部分日志):
编辑1:
我尝试安装 lxml,看起来 lxml 已经安装但没有出现在 virtualenv 中
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:
我不确定这样做的步骤是什么。请建议。
提前感谢您的帮助。