在已检测图像上运行功能测试用例时,不会生成gcda文件

问题描述 投票:0回答:1

我正在尝试生成C文件的覆盖范围(Yocto项目)。

所以,我在大多数可用模块的Makefile.am中添加了gcov标志“-g -O0 --coverage”。

它在使用coverage标志编译每个模块期间生成“.gcno”文件。

我已经从所有这些模块生成了一个图像,并将其加载到测试设备中并运行了功能测试用例。

我能够使用运行测试设备的进程中的strings命令找到“gcda”文件的路径。

因此,在将进程ID附加到gdb之后,我使用gdb模式使用“__gcov_flush”命令刷新覆盖范围。

这会引发错误“当前上下文中没有符号__gcov_flush”。请告诉我这个错误可能是什么原因。

c instrumentation gcov
1个回答
0
投票

根据评论,直接使用Coverage Compiler标志构建Linux内核并假设获得有意义的覆盖度量标准是不可能的。

代码覆盖率指标实际上需要一些文件系统来编写运行时覆盖数据(即* .gcda文件)。

如果要为Linux内核启用代码覆盖率here是一个文档,介绍如何使用GCOV虚拟文件系统来启用支持来收集覆盖率指标。

此外,假设您正在为不同的体系结构进行交叉编译,那么在执行后捕获* .gcno文件之后,您可能必须使用cross-gcov工具来收集覆盖度量标准。

© www.soinside.com 2019 - 2024. All rights reserved.