文档章节

SylixOS 调试方法详解(二)——SylixOS 代码覆盖率检查

E
 Esc130
发布于 2017/08/18 10:59
字数 855
阅读 9
收藏 0
点赞 0
评论 0

1. SylixOS调试方法介绍

SylixOS 实现了一个功能强大的调试 stub,可在设备或模拟器上在线调试应用程序,RealEvo-IDE 也提供配套的调试插件。目前 RealEvo-IDE 既支持自动推送调试、也支持传统的手动启动 gdbserver 的调试方式。在官方公布的使用手册中没有详细写出在日常开发中非常实用的几种调试方式,我们通过新建几个app工程来做相应的演示,主要有代码静态分析、代码覆盖率检查、性能分析以及一个实战案列的演示,本文主要介绍代码覆盖率检查调试。

2. SylixOS调试步骤详解

代码覆盖率检查主要用来防止出现多余代码,通过建立一个“coverage_check_app”来做代码覆盖率检查的演示,程序清单如程序清单 2‑1所示。

程序清单 2‑1  static_check_app清单

#include <stdio.h>

void test()

{

   printf("Hello SylixOS!\n");

}

 

int main (int argc, char **argv)

{

    printf("Hello SylixOS!\n");

 

    return  (0);

}

 

 

       所用demo程序编译未报错,可成功上传,程序编译结果如图 2‑1所示,在编译过程中也不会发现任何错误,但代码本身存在冗余现象。通常代码量比较小的情况下,可以通过人工排查的方式减少该现象,从而提高代码质量,但是在代码量比较大,代码编写人员较多时,就无法避免这种状况,这样会对项目周期、项目质量造成比较大的影响,也会增加测试人员的工作量。这些都不利于项目开发和工作效率的提高。

    

图 2‑1  编译结果

这种情况下可以通过RealEvo-IDE中自带的代码覆盖率检查工具解决这一类开发难题。

编译上传之后打开RealEvo-Simulator,打开对应的架构平台,运行demo程序,如图 2‑2所示。

图 2‑2 运行coverage_check_app

 

选中需要调试的工程,这里选择“coverage_check_app”工程,右击工程选择“Properties”,点击“SylixOS Project”,选择“Compiler Setting ”     ,勾选“Enable govc(Code coverage analysis)”,如图 2‑3所示。

图 2‑3  设置调试工具

       选中需要调试的工程,这里选择“coverage_check_app”工程,右击工程选择“SylixOS Coverage Analysis”,点击“Get Coverage Rate File”,操作如图 2‑4所示。

图 2‑4  操作步骤

 

 

 

  成功抓取文件,如图 2‑5所示。

图 2‑5  抓取成功

 

若不运行程序,则无法成功抓取文件,如图 2‑6所示。

图 2‑6  抓取不成功

 

抓取完成后,选中需要调试的工程,这里选择“coverage_check_app”工程,右击工程选择“SylixOS Coverage Analysis”,点击“Show Coverage Rate”,如图 2‑7所示。

图 2‑7  进行覆盖率分析

 

运行结果如图 2‑8所示,代码存在同于现象,可以通过分析代码进行优化,减少这种情况,提高代码质量。

图 2‑8 冗余检查

 

3. 总结

在SylixOS中可以使用多种调试方式进行相关调试,根据实际情况对程序进行调试,本节主要介绍代码覆盖率检查的具体调试方式,下一节将详细介绍性能分析调试。

4. 参考资料

《SylixOS应用程序开发手册》

《RealEvo-IDE使用手册》

© 著作权归作者所有

共有 人打赏支持
E
粉丝 0
博文 10
码字总数 8146
作品 0
南京
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
05/15
0
0
SylixOS调试方法详解——性能分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
06/26
0
0
SylixOS调试方法详解——综合案例分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
06/26
0
0
SylixOS调试方法详解——综合案例分析

SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传统...

Esc130
2017/10/25
0
0
SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍 目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的...

Jackstraw瑞
2017/11/01
0
0
SylixOS线程堆栈大小浅析

目录 1. SylixOS线程、线程栈介绍 1 1.1 线程的介绍 1 1.2 线程栈的介绍 1 2. SylixOS线程栈大小的分配 1 2.1 线程、线程栈相关属性的设置 2 2.2 线程栈大小 2 2.3 线程堆栈警戒区 3 3. 总结...

Esc120
06/26
0
0
SylixOS线程创建的流程分析

概述 本文档的主要内容是分析SylixOS线程创建的流程,详细介绍了SylixOS的线程创建函数API_ThreadCreate。 环境和参数检查 在SylixOS中,线程的创建函数不能在中断中调用。且在线程的创建时,...

wangyu123
2017/10/24
0
0
SylixOS 支持多核 RISC-V 处理器

2018年3月31日,SiFive 发布全球首款多核全功能 RISC-V 处理器:FU540,此款处理器也是全球第一颗有能力运行标准 Linux 的 CPU。 22天后,SylixOS 成功在 FU540 真机上运行起来,成为全球第一...

翼辉信息
04/22
0
0
SylixOS 在 t_main 中使用硬浮点方法

1. 问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中...

zhywxyy
06/21
0
0
SyilxOS块设备CACHE管理

1.块设备CACHE简介 前文介绍了SylixOS中的块设备驱动模型和I/O控制,本篇主要介绍SylixOS中的块设备CACHE管理。由于磁盘属于低速设备,磁盘的读写速度远远低于CPU,所以为了解决这种速度不匹...

huikai309
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部