bcov进行覆盖率统计
kcov是在bcov基础上进行的,bcov已经很久没有维护了;
首先需要下载依赖库libdwraft,然后在configure时候进行指定:
./configure --with-libdwarf=/usr/local/lib
然后make;make install
(1)悲催的是编译过程中出现了错误
‘PTRACE_O_TRACECLONE’ was not declared in this scope
增加头文件<sys/ptrace>
同时对ptrace调用的地方进行强制类型转换,例如原来是
ptrace(PTRACE_GETREGS,activeChild,0,®s);
然后修改为
ptrace((__ptrace_request)PTRACE_GETREGS,activeChild,0,®s);
既可以编译通过了;
(2)安装以后就可以使用了,对源程序编译时候需要增加-g参数,否则统计不到信息
g++ t.cpp -O0 -g
启动程序的时候使用bcov启动:
bcov ./a.out &
启动会显示
probing debug information...
found active lines in 1 source files
set 11 breakpoints
然后killall
killall -9 a.out
显示
program terminated
coverage info written to .bcovdump
此时本地生成了覆盖率文件.bcovdump
bcov-report ./.bcovdump ~/httpd/htdocs/bcov-report.DhblLi
查看之:

跟gcov相比,对于服务类型的测试覆盖率统计分析
(1)bcov不需要新增编译参数和连接参数;但是需要增加-g的选项;
(2)gcov需要启动时候设置环境变量,而bcov需要使用bcov命令启动被测程序;
(3)合并多个文件的事情,可以看到bcov的输出文件是.bcovdump是一堆数字,似乎更容易编辑:
bcov进行覆盖率统计的更多相关文章
- .NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )
.NET Core单元测试之搞死开发的覆盖率统计 这两天在给项目补单元测试,dalao们要求要看一下测试覆盖率 翻了一波官方test命令覆盖率倒是有支持了,然而某个更新日志里面写着 ["Su ...
- (转)使用CUnit进行单元测试和覆盖率统计
CUnit安装 如果能联网的话,直接 yum install CUnit-devel.x86_64 就完成安装了,注意要安装devel版本,这样才能找到头文件. 编写单元测试代码 CUnit的测试是单 ...
- 基于JaCoCo的Android测试覆盖率统计(二)
> 本文章是我上一篇文章的升级版本,详见地址:https://www.cnblogs.com/xiaoluosun/p/7234606.html ## 为什么要做这个?1. 辛辛苦苦写了几百条测 ...
- 安卓app功能或自动化测试覆盖率统计(不用instrumentation启动app)
一文带你揭秘如何采取非instrumentation启动app,打造实时统计覆盖率,一键触发覆盖率测试报告. 在上篇文章,一文带你解决Android app手工测试或者自动化测试覆盖率统计(撸代码版) ...
- 【Lua】实现代码执行覆盖率统计工具
一.如何评估测试过程的测试情况? 很多时候完成功能测试后就会发布上线,甚至交叉和回归都没有足够的时间去执行,然后通过线上的补丁对遗漏的问题进行修复.如果可以在发布前了解本次测试过程所覆盖代码执行的比例 ...
- Sonar + Jacoco,强悍的UT, IT 双覆盖率统计(转)
以前做统计代码测试覆盖,一般用Cobertura.以前统计测试覆盖率,一般只算Unit Test,或者闭上眼睛把Unit Test和Integration Test一起算. 但是,我们已经过了迷信UT ...
- python覆盖率统计
啦啦啦,最近在跟离线脚本写自动化,真麻烦呀~ 离线任务是python写的,自动化写完了,就得统计覆盖率了. coverage.py是一个用来统计python程序代码覆盖率的工具.网上有很多资料,使用起 ...
- 对c++服务端进行覆盖率统计
(1)首先需要为每个被测程序的所有编译文件增加选项,如果文件太多,这无疑是灾难,可利用spec文件达到目的 sed -i '$ a\export LD_PRELOAD=/usr/local/bin/c ...
- EclEmma单元测试覆盖率统计插件
EclEmma是Eclipse里的一个插件,安装简单,覆盖率显示直观.安装EclEmma.打开Eclipse,点击Help → Intall New SofaWare → Work with 输入 h ...
随机推荐
- Git 版本控制工具(学习笔记)
GIT(分布式) 一.Git 初始版本控制工具 1. 安装Git Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core 之后回车输入密码,即可完 ...
- java之Comparator与Comparable
转自:http://blog.csdn.net/zhangerqing 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定 ...
- jQuery判断页面滚动条滚动方向
废话不多说,直接上代码 $(window).scroll(function(){ var before = $(window).scrollTop(); $(window).scroll(functi ...
- LabVIEW设计模式系列——各种各样的状态机
- 基于HBase0.98.13搭建HBase HA分布式集群
在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...
- XC一键锁屏应用
XC一键锁屏,一键Android锁屏应用,彻底解放开关机键~ 下载地址: http://download.csdn.net/detail/jczmdeveloper/7329447
- WTL的核心机制
WTL背景介绍 WTL是微软ATL开发组成员Nenad Stefanovic先生在ATL Windowing机制上发展起来的一整套GUI框架,运用template技术组织和创建GUI对象,构筑了精致的 ...
- javascript 和 jquery 语法上的一些区别
jQuery 能大大简化 Javascript 程序的编写,我最近花时间了解了一下 jQuery,把我上手过程中的笔记和大家分享出来,希望对大家有所帮助.要使用 jQuery,首先要在 HTML 代码 ...
- js--小结①
- 文件夹IsShow字段为空
IsShow为YesNo字段,默认值为Yes:在Library中新建一个文件的时候会给出默认值yes,但是新建一个文件夹的时候,默认为空,所以f.Item["IsShow"]为空, ...