gcov lcov进行 android apk项目的 code coverage 代码覆盖率检测

本文介绍了如何在Android APK项目中使用gcov和lcov进行代码覆盖率检测,包括解决在不同设备上运行和无退出功能的程序所遇到的问题。通过设置环境变量、指定数据文件路径及添加信号处理函数,可以成功收集和分析覆盖率数据。
摘要由CSDN通过智能技术生成

gcov lcov进行 android apk项目的 code coverage 代码覆盖率检测

最近在做code coverage,看了很多博客,大都说到了最基本的一些要求,
比如在用gcc编译的时候加入
CFLAGS=-fprofile-arcs -ftest-coverageLDFLAGS=-lgcov -lgcc参数,就可生成*.gcno文件,
然后运行生成的可执行文件,就会在*.gcno文件对应目录下输出*.gcda文件,
然后运行gcov *.cpp 会生成*.cpp.gcov文件,
查看可看到该cpp里的语句执行了几次,然后运行
lcov --capture --directory . --output-file testHtml.info --test-name testHtml; genhtml -o result testHtml.info
可生成result文件夹,打开里面的index.html即可看到结果。

但是这是对于一般的c/c++项目,而且是在编译的机器上直接运行可执行文件,如果我是把可执行文件放到别的电脑上运行,又或者我不是运行一个简单的类似于“hello world!”的可直接在终端运行的程序,而是一个需要在android系统里运行的apk,那这样的话,运行可执行文件就无法输出*.gcda文件了,很多博客里并没有提到这一特殊情况,或者说没有讲的很明白,让初学者无从下手,这时该怎么办呢?

一、如果在别的电脑上运行,有两种方法:

①设置环境变量,gcov可设置两个环境变量来指定*.gcda文件的输出路径:GCOV_PREFIX, GCOV_PREFIX_STRIP 。在终端输入export GCOV_PREFIX=/home/$user/a/ 运行程序后将在/home/$user/a/下输出*.gcda文件,并且目录和*.gcno文件保持一致,如果同时在终端输入export GCOV_PREFIX_STRIP=$n ,那么*.gcda的目录就会减少$n层,一般不用设置这个环境变量。
②在编译源码的时候加入另一个参数-

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值