移植 bullseye coverage—arm 版本

2023-10-31 17:48

本文主要是介绍移植 bullseye coverage—arm 版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     经历过无数次失败后,就在刚刚,我已经成功移植Bullseye—arm版本,解决了手机项目,尤其是在arm平台上运行的linux内核项目无法使用bullseye的难题。详细过程见内:

     Bullseye Coverage统计代码的原理(linux 系统):
1. 项目编译过程,Bullseye Coverage在后台运行,并且监控所有的编译命令,项目编译成功后,会生成一个.cov文件,文件中记录了详细的被统计的函数(对象)
2. 项目运行过程,会自动往.cov文件中写执行的覆盖率数据。(即使这时候Bullseye Coverage关闭不运行,照样可以往.cov中写数据,已经经过例子验证过。)

     由于Bullseye Coverage是这样的工作方式,正好有利于Bullseye Coverage在arm平台上的使用。

思路:
     1. 很多arm平台上的手机项目,他们都是先在x86平台linux系统下写代码,然后交叉编译,编译好后烧录到手机中,运行手机的app,就可以运行他们写的内核代码。
     2. 所以,我们Bullseye Coverage可以在x86平台linux下经过交叉编译后,项目编译时候产生arm版本的.cov文件,然后将.cov文件(空的没有数据)和项目编译好得代码一起烧录到手机上,当手机运行的
     时候,产生的覆盖率统计数据会写入.cov文件,然后将.cov文件拷贝到PC机器上,取出里面的覆盖率数据。——大功告成。O(∩_∩)O哈哈~


移植方法:
假设Bullseye Coverage安装在linux系统的 /opt/Bullseye Coverage/目录下。并且安装好交叉编译环境
项目编译要建立交叉编译,那么Bullseye Coverage工具也要建立一个交叉编译的工作,产生一个libcov-arm-none-linux-gnueabi.a文件和libcov-cross.o文件
这两个文件就是当交叉编译项目的时候编译的时候,会产生一个.cov文件

1. 修改/opt/Bullseye Coverage/run目录下的Makefile文件内容如下:

  
CC=arm-none-linux-gnueabi-gcc -D_REENTRANT -fPIC -O3
ar=arm-none-linux-gnueabi-ar

# Avoid generating __i686.get_pc_thunk.bx symbol
#CC := $(CC) -march=i586

build: ../lib/libcov-arm-none-linux-gnueabi.a


../lib/libcov-arm-none-linux-gnueabi.a: libcov-cross.o
  ar -rc $@ $?

libcov-cross.o: libcov-posix.c
  $(CC) -c -o $@ -DLibcov_noAutoSave libcov-posix.c  


2. 编译项目
export PATH=/opt/BullseyeCoverage/bin:$PATH
cov01 -1
make


我用的是xxx_arm版本的例子来做实验。请看下面截图:

1. 首先,不开启Bullseye 时候 xxx—arm版本可以正常编译,编译出得运行文件是二进制文件,在X86机器上无法运行。


2. 开启bullseye,再次编译,产生。Cov文件
 

3. 查看。Cov文件是否统计了arm项目编译好的里面的函数,请看:

 
成功,已经成功产生了.cov文件,并且里面统计的函数完全正确,目前覆盖率为0,是因为项目没有运行,在x86平台下无法运行编译好的可执行文件,我们只需用将编译好的xxxx可执行文件和。Cov文件一起烧录到手机上,运行下即可产生数据。

 

 

 


 
   

 

 

这篇关于移植 bullseye coverage—arm 版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/317050

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

Windows 10 各版本

对应于服务选项的 Windows 10 当前版本 Version服务选项上市日期OS build最后修订日期1803半年频道7/10/201817134.1917/24/2018Microsoft 建议使用1803半年频道(定向)4/30/201817134.1917/24/20181709半年频道1/18/201816299.5797/24/20181709半年频道(定向)10/17/2017

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge