一种针对多种处理器架构的非侵入式覆盖率统计方法技术

技术编号:26030918 阅读:23 留言:0更新日期:2020-10-23 21:08
本发明专利技术涉及一种针对多种处理器架构的非侵入式覆盖率统计方法,包括:搭建嵌入式软件仿真运行环境;解析多种架构目标文件及调试信息格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息;解析源代码获取源代码的分支信息;获取覆盖率信息,包括:仿真执行开始后,判断当前指令是否是分支指令,若不是,继续执行指令;如果是,以当前地址作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新覆盖率查询表;将覆盖率统计分析结果输出。本发明专利技术的能够弥补现有覆盖率统计分析工具的不足,满足多种场景下覆盖率统计分析的需求。

【技术实现步骤摘要】
一种针对多种处理器架构的非侵入式覆盖率统计方法
本专利技术涉及嵌入式软件的测试技术,特别涉及一种针对多种处理器架构的非侵入式覆盖率统计方法。
技术介绍
随着嵌入式软件在不同领域的广泛应用,嵌入式软件的开发技术越来越多样化。嵌入式软件的安全性和可靠性问题越来越引起用户和开发人员的重视,特别是在可靠性和安全性要求很高的行业。嵌入式软件在特定的硬件环境下才能运行,但是嵌入式软件的测试环境与开发环境并不同于真实的运行环境,这将造成目标机上再充分的测试也不能保证真实运行环境下嵌入式软件的绝对安全。为了对嵌入式软件的测试提供有力的支撑,通常的虚拟化验证平台都是基于某一种方式的验证手段,并不能满足嵌入式软件对虚拟化验证的需求,缺乏有效的覆盖率统计分析手段。目前比较流行的测试工具提供的覆盖率统计都是基于源码的,基于目标码的覆盖率信息统计工具很少。为了满足不断涌现的目标码验证的需求,一些公司提出了一些相应的产品,但都有些缺陷,对高安全性、高可靠性的嵌入式系统的目标码验证技术的支持还不够。基于源码的覆盖率统计分析工具大都基于插装算法实现的,有两种比较典型的覆盖率分析方法,一种是依赖于某种特定编译器的覆盖率分析工具,另一种是功能单一的覆盖率分析工具。
技术实现思路
本专利技术的目的在于提出一种针对多种处理器架构的非侵入式覆盖率统计方法,用于解决嵌入式软件目标码测试过程中无法难以获取覆盖率信息的问题。本专利技术一种针对多种处理器架构的非侵入式覆盖率统计方法,其中,包括:搭建嵌入式软件仿真运行环境;解析多种架构目标文件及调试信息格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息;解析源代码获取源代码的分支信息;获取覆盖率信息,包括:仿真执行开始后,判断当前指令是否是分支指令,若不是,继续执行指令;如果是,以当前地址作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新覆盖率查询表;将覆盖率统计分析结果输出。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,定义调试信息格式MidDebugInfo,并将多种调试信息解析后转换为该调试信息格式MidDebugInfo,调试信息包含文件信息、函数信息以及源码目标码对应关系信息,其中文件信息包含文件名、文件路径、文件对应的目标码开始地址和目标码结束地址,函数信息包含函数名、函数开始地址及函数结束地址,源码目标码对应关系信息包含源码行数、及该行源码对应的目标码开始地址和目标结束地址。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,搭建嵌入式软件仿真运行环境包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制;目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法实现目标指令在Windows/Intel宿主机架构下的异构执行,实现目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真以及存储系统仿真;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,解析多种架构目标文件及调试信息格式包括:建立以文件、函数以及行号信息三级结构信息表;(1)多种处理器目标文件解析,根据目标文件结构,确定调试信息类型并读取调试信息;(2)解析Dwarf1、Dwarf2、Dwarf3、stab、COFF以及OMF51调试信息格式,并将调试信息格式转换为调试信息格式MidDebugInfo;(3)读取调试信息格式MidDebugInfo的调试信息,判断当前调试信息节点类型;(4)判断当前调试信息节点是否是文件开始类型节点,若是创建文件信息记录结构,将文件对应目标码开始地址写入到当前文件信息记录结构中,执行步骤(3),若不是执行步骤(5);(5)判断当前调试信息节点是否是函数开始类型节点,若是创建函数信息记录结构,将函数对应目标码开始地址写入到当前函数信息记录结构中,并将当前函数信息结构插入到当前文件信息记录机构中,执行步骤(3),若不是执行步骤(6);(6)判断当前调试信息节点是否是行号信息类型节点,若是创建行号信息记录结构,并将当前行号信息结构插入到当前函数信息记录机构中,执行步骤(3),若不是执行步骤(7);(7)判断当前调试信息节点是否是函数结束类型节点,若是将函数对应目标码结束地址写入到当前函数信息记录结构中,执行步骤(3),若不是执行步骤(8);(8)判断当前调试信息节点是否是文件结束类型节点,若是将文件对应目标码结束地址写入到当前文件信息记录结构中,执行步骤(9);(9)判断调试信息读取是否结束,若没有结束,执行步骤(3),否则,开始解析源代码获取源代码的分支信息。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,解析源代码分支信息包括:获取源代码路径信息;根据三级查询结构表,逐个读入源文件,并对行号信息节点对应的源代码行的分支信息进行判断,获取源代码分支情况。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,覆盖率信息输出格式为:基本块开始地址、基本块结束地址、执行次数、分支指令地址以及分支信息。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,根据文件、函数、行号信息三级结构信息表,读取记录覆盖率信息的文件,并根据源代码和目标码对应关系及源文件分支信息,生成覆盖率统计分析结果。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,覆盖统计结果输出提供指令取指、译码、反汇编以及执行信息解析,生成覆盖统计分析结果。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,以目标码基本块为最小统计单元,基本块包含开始地址、结束地址、分支指令地址、执行次数以及分支信息,一个基本块包含一行或多行源码对应的目标码。根据本专利技术的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,获取覆盖率信息包括:(a)运行嵌入式仿真环境并加载目标文件到模拟内存中;(b)仿真执行开始,并将执行开始地址作为第一个基本块的开始地址;(c)读取并翻译指令,执行当前指令并判断当前指令是否为分支指令,若不是分支指令,继续执行步骤(c),若是执行步骤(d);(d)分支指令对应的地址为基本块结束地址,记录当前基本块的开始地址、结束地址及分支指令的分支信息;(e)以基本块的开始地址和结束地址为索引,查询当前基本块在三级覆盖率信息表中的位置,确定基本块对应的行号信息结构,将对应的行号信息结构执行次数加一并更新分支信息;(f)判断是否生成覆盖率,若否,继续执行步骤(c),若是,执行步骤(g);(g)将记录在覆盖率信息查询表中的信息以特定的格式写入到指定路径的文件中,并暂停仿真执行。本专利技术的目的是提出一种针对多种处理器架构的非侵入式覆盖率统计方法,通过分析不同处理器架构下目标文件的类型和调本文档来自技高网...

【技术保护点】
1.一种针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,包括:/n搭建嵌入式软件仿真运行环境;/n解析多种架构目标文件及调试信息格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息;/n解析源代码获取源代码的分支信息;/n获取覆盖率信息,包括:/n仿真执行开始后,判断当前指令是否是分支指令,若不是,继续执行指令;如果是,以当前地址作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新覆盖率查询表;/n将覆盖率统计分析结果输出。/n

【技术特征摘要】
1.一种针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,包括:
搭建嵌入式软件仿真运行环境;
解析多种架构目标文件及调试信息格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息;
解析源代码获取源代码的分支信息;
获取覆盖率信息,包括:
仿真执行开始后,判断当前指令是否是分支指令,若不是,继续执行指令;如果是,以当前地址作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新覆盖率查询表;
将覆盖率统计分析结果输出。


2.如权利要求1所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,定义调试信息格式MidDebugInfo,并将多种调试信息解析后转换为该调试信息格式MidDebugInfo,调试信息包含文件信息、函数信息以及源码目标码对应关系信息,其中文件信息包含文件名、文件路径、文件对应的目标码开始地址和目标码结束地址,函数信息包含函数名、函数开始地址及函数结束地址,源码目标码对应关系信息包含源码行数、及该行源码对应的目标码开始地址和目标结束地址。


3.如权利要求1所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,搭建嵌入式软件仿真运行环境包括:
目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制;
目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法实现目标指令在Windows/Intel宿主机架构下的异构执行,实现目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真以及存储系统仿真;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。


4.如权利要求2所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,解析多种架构目标文件及调试信息格式包括:
建立以文件、函数以及行号信息三级结构信息表;
(1)多种处理器目标文件解析,根据目标文件结构,确定调试信息类型并读取调试信息;
(2)解析Dwarf1、Dwarf2、Dwarf3、stab、COFF以及OMF51调试信息格式,并将调试信息格式转换为调试信息格式MidDebugInfo;
(3)读取调试信息格式MidDebugInfo的调试信息,判断当前调试信息节点类型;
(4)判断当前调试信息节点是否是文件开始类型节点,若是创建文件信息记录结构,将文件对应目标码开始地址写入到当前文件信息记录结构中,执行步骤(3),若不是执行步骤(5);
(5)判断当前调试信息节点是否是函数开始类型节点,若是创建函数信息记录结构,将函数对应目标码开始地址写入到当前函数信息记录结构中,并将当前函数信息结构插入到当前文件信息记录机构中,执行步骤(3),若不是执行步骤(6);
(6)判断...

【专利技术属性】
技术研发人员:贾张涛吴超付修锋安恒李雅斯沈兴龙闫帅
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1