能否在不同的目录结构下使用GCOV创建.gcda文件?

3

我正在尝试使用lcov从主目录生成代码覆盖率报告。源代码编译时使用-coverage选项生成覆盖信息(创建gcno文件)。 然后,我将可执行文件和gcno文件复制到主目录。我正在尝试检查是否可以通过在主目录中运行./exe来生成覆盖率报告。我在/home中运行可执行文件,测试用例已通过,但发现没有创建.gcda文件。

I add the following CPP flag:
 -fprofile-dir= “/home” 
and hence run the executable but still .gcda is not created .

我需要指定路径来从主目录获取.gcno文件并在当前目录生成.gcdo文件吗?

我们能否在运行时指定不同的目录或使用当前目录?我已经设置了环境变量,但没有得到期望的输出。 - undefined
嗨,himshikha,我对gcov和lcov都不太熟悉。我正在尝试为使用Android.mk和Android.bp构建的模块生成覆盖率报告,并与gtest一起使用。但无论哪种方式都无法正常工作。你能帮我解决这个问题吗?谢谢! - undefined
2个回答

4

是的,所有之前的gcda文件都已被删除。 - undefined
1
这意味着你的测试将遍历所有模块,如果你想覆盖单个模块,最简单的方法是删除其他模块的所有gcno文件。 然后,你将获得一个模块的覆盖率。 - undefined
好的。但在lcov中,图像显示文本的目的是什么? - undefined
抱歉,我不确定对于关于图像的问题是否理解。顺便说一下,我认为这是另一个主题,你应该开一个新的话题。 - undefined
抱歉,我没有看到你的问题...也许你的测试没有覆盖整个代码... - undefined
显示剩余4条评论

2
也许你正在编译多个模块,你是否检查了模块间的依赖关系?请执行以下步骤:
  1. 编译所有代码
  2. 删除无用的.gcno文件(.gcno是在编译时生成的)
  3. 执行测试(应该创建与gcno文件匹配的gcda文件)
  4. 生成报告
另一种可能性是:
  1. 编译你的代码
  2. 执行测试
  3. 删除无用的gcno + gcda文件
  4. 生成报告
其他: 我猜想你可以使用一些选项来为特定的模块生成报告,但我对那些选项不太熟悉。
祝好

嗨Thomas,你能否给我分享一些在AOSP中逐步生成覆盖率的示例项目、模块或参考链接?谢谢! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接