GCOV覆盖率分析

news2025/1/18 20:29:52

安全之安全(security²)博客目录导读

覆盖率分析汇总

目录

一、GCOV简介

二、GCOV使用示例

三、GCOV编译命令

四、运行并生成覆盖率报告

五、覆盖率报告分析


一、GCOV简介

        因为动态代码分析可能只覆盖部分代码,所以我们需要一个代码覆盖工具,以了解哪些代码被覆盖。目前有一些商业代码覆盖工具,如Bullseye。一些编译器还增加了代码覆盖功能,例如GCOV。

        GCOV是一个测试代码覆盖率的工具。与GCC一起使用来分析程序,以帮助创建更高效、更快的运行代码,并发现程序的未测试部分。它是一个命令行方式的控制台程序。需要结合lcov,gcovr等前端图形工具才能实现统计数据图形化。GCOV伴随GCC发布,不需要单独下载GCOV工具。配合GCC共同实现对c/c++文件的语句覆盖和分支覆盖测试。

二、GCOV使用示例

三、GCOV编译命令

gcc -fprofile-arcs -ftest-coverage -o vulnerable vulnerable.c

-ftest-coverage:在编译的时候产生.gcno文件,它包含了重建基本块图和相应的块的源码的行号的信息。
-fprofile-arcs:在运行编译过的程序的时候,会产生.gcda文件,它包含了弧跳变的次数等信息。

四、运行并生成覆盖率报告

./vulnerable

# 生成覆盖率文本报告

lcov -c -d . -o test.info --rc lcov_branch_coverage=1

# 生成覆盖率网页报告

genhtml --branch-coverage -o result test.info

五、覆盖率报告分析

打开result文件夹下的index.html文件,即可得到网页版的覆盖率分析报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1095861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

APP备案避坑指南,值得收藏

目录 什么时间节点前需完成备案? APP/小程序一定要做备案吗? 涉及前置审批的APP有哪些? APP 支持安卓、IOS 多个运行平台,应该备案多少次? 企业是自有服务器,该如何进行APP备案? APP备案可…

探索服务器的无限潜能:创意项目、在线社区与更多可能

文章目录 1. 创意项目的孵化器1.1 托管你的应用1.2 测试和开发1.3 制定和实施你的计划 2. 构建在线社区2.1 自定义社交网络2.2 数据控制2.3 扩展和改进 3. 其他创意可能性3.1 博客和媒体网站3.2游戏服务器3.3 云存储3.4 数据分析3.5 远程办公 结论 🎉欢迎来到Java学…

你不一定知道的七种进程间通信方式

一、前言 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷贝到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信…

Easysearch压缩模式深度比较:ZSTD+source_reuse的优势分析

引言 在使用 Easysearch 时,如何在存储和查询性能之间找到平衡是一个常见的挑战。Easysearch 具备多种压缩模式,各有千秋。本文将重点探讨一种特别的压缩模式:zstd source_reuse,我们最近重新优化了 source_reuse,使得它在吞吐量…

【ROS2RUN源码解析:解决ROS2 run命令找不到问题的详细流程】

文章目录 概要整体架构流程技术名词解释小结 概要 当你在使用ROS2时遇到找不到可执行文件的错误时,首先需要执行以下步骤来诊断问题。首先,使用命令printenv AMENT_PREFIX_PATH(或者ros2 pkg prefix加上包的名称)来检查你的功能包…

AI :微软推出 AutoGen 框架,帮开发者创建基于大语言模型的复杂应用

本心、输入输出、结果 文章目录 AI :微软推出 AutoGen 框架,帮开发者创建基于大语言模型的复杂应用前言AutoGen 简介快速入门AutoGen 安装相关支持相关代码相关架构图弘扬爱国精神AI :微软推出 AutoGen 框架,帮开发者创建基于大语言模型的复杂应用 编辑:简简单单 Online z…

Chrome 浏览器关闭后再打开,需要重新登录账号,解决办法

最近(2023-10-15)每次打开 Chrome 浏览器,Chrome 自身账号以及各个网站账号都需要重新登录,电脑本身为家用,使用时间不多的情况下,频繁登录账号很痛苦,也很迷惑。现找到解决办法,记录…

基于SSM大学生竞赛活动平台

基于SSM大学生竞赛活动平台的设计与实现 开发语言:Java 数据库:MySQL 技术:SpringSpringMVCMyBatisVue 工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 前台系统主要功能实现:首页列表展示、自愿者招聘、竞赛新闻查…

汇编语言基础

引言 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作。 基础知识 1.1机器语言 机器语言是机器指令的集合…

Stm32_标准库_13_串口蓝牙模块_手机与蓝牙模块通信

代码: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Serial.h"char News[100] "";uint8_t flag 1;void Get_Hc05News(char *a){uint32_t i 0…

设计模式之是简单工厂模式

分类 设计模式一般分为三大类:创建型模式、结构型模式、行为型模式。 创建型模式:用于创建对象,共五种,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式:用于处理类或对…

STM32 ---- 再次学习STM32F103C8T6/STM32F409IGT6

目录 一、环境搭建及介绍 关于STM32基础介绍 新建工程 外设案例 LED流水灯 蜂鸣器 上拉电阻和下拉电阻知识 电压比较器 c语言基础知识 类型、结构体、枚举 类型int8_t int16_t int32_t 宏替换 #define 和typedef用法 结构体两种填充方法 和 命名规则 枚举用法 常用…

云安全——云计算基础

0x00 前言 学习云安全,那么必然要对云计算相关的内容进行学习和了解,所以云安全会分为两个部分来进行,首先是云计算先关的内容。 0x01 云计算 广泛传播 云计算最早大范围传播是2006年,8月,在圣何塞【1】举办的SES&a…

Vs2017搭建QT开发环境

前置条件: vs2017 前提需要安装Qt的插件 : 若是没有,通过 “工具->扩展和更新->联机->Qt Visual Studio Tools”,安装Qt Visual Studio Tools 1、新建工程"文件->新建->项目",出现如下界面…

Yakit工具篇:爆破与未授权检测的使用

简介(来自官方文档) 爆破和未授权检测是网络安全领域中一种常见的测试技术,其主要目的是测试系统或应用程序中的口令是否强健,Yakit的爆破与未授权检测模块则实现了该部分的内容。 这个模块可以对多种常见协议和服务(如ftp、memcached、mon…

【操作系统】信号量机制(整型信号量、记录型信号量),用信号量实现进程互斥、同步、前驱关系

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 信号量 一、信号量机制1.1 整型信号量1.2 记…

05_51单片机led流水线的实现

1:step创建一个新的项目并将程序烧录进入51单片机 以下是51单片机流水线代码的具体实现 #include <REGX52.H>void Delay500ms() //11.0592MHz {unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); }void main(){while(1){P1 0…

深入理解React中的useEffect钩子函数

引言&#xff1a; React是一种流行的JavaScript库&#xff0c;它通过组件化和声明式编程的方式简化了前端开发。在React中&#xff0c;一个核心概念是组件的生命周期&#xff0c;其中包含了许多钩子函数&#xff0c;用于管理组件的不同阶段。其中之一就是useEffect钩子函数&…

完成了一个小项目:修改了一个用PHP+MySQL写的建网站用的CMS原程序

最近一段时间&#xff0c;我建了一个网站。建一个网站及简单也复杂。要功能合适&#xff0c;界面合适&#xff0c;也不是容易的事。开始用了一个现成的建站软件WordPress&#xff0c;但是对界面不满意。后来找了另外一个带源码的程序&#xff0c;修改该程序花了十多天时间。到目…

metaRTC7集成lvgl ui demo编译指南

概要 开源轻量级嵌入式图形库lvgl:Light and Versatile Graphics Library&#xff0c;最低只需8kb内存&#xff0c;可为任何 MCU、MPU 和显示类型创建漂亮的 UI。 metaRTC新增lvgl demo&#xff0c;可在linux下编译运行。 源码下载 https://github.com/metartc/metaRTC/rel…