CN111813672B - 一种针对多种处理器架构的非侵入式覆盖率统计方法 - Google Patents

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

Info

Publication number
CN111813672B
CN111813672B CN202010636319.9A CN202010636319A CN111813672B CN 111813672 B CN111813672 B CN 111813672B CN 202010636319 A CN202010636319 A CN 202010636319A CN 111813672 B CN111813672 B CN 111813672B
Authority
CN
China
Prior art keywords
information
file
current
address
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010636319.9A
Other languages
English (en)
Other versions
CN111813672A (zh
Inventor
贾张涛
吴超
付修锋
安恒
李雅斯
沈兴龙
闫帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN202010636319.9A priority Critical patent/CN111813672B/zh
Publication of CN111813672A publication Critical patent/CN111813672A/zh
Application granted granted Critical
Publication of CN111813672B publication Critical patent/CN111813672B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种针对多种处理器架构的非侵入式覆盖率统计方法
技术领域
本发明涉及嵌入式软件的测试技术,特别涉及一种针对多种处理器架构的非侵入式覆盖率统计方法。
背景技术
随着嵌入式软件在不同领域的广泛应用,嵌入式软件的开发技术越来越多样化。嵌入式软件的安全性和可靠性问题越来越引起用户和开发人员的重视,特别是在可靠性和安全性要求很高的行业。嵌入式软件在特定的硬件环境下才能运行,但是嵌入式软件的测试环境与开发环境并不同于真实的运行环境,这将造成目标机上再充分的测试也不能保证真实运行环境下嵌入式软件的绝对安全。
为了对嵌入式软件的测试提供有力的支撑,通常的虚拟化验证平台都是基于某一种方式的验证手段,并不能满足嵌入式软件对虚拟化验证的需求,缺乏有效的覆盖率统计分析手段。
目前比较流行的测试工具提供的覆盖率统计都是基于源码的,基于目标码的覆盖率信息统计工具很少。为了满足不断涌现的目标码验证的需求,一些公司提出了一些相应的产品,但都有些缺陷,对高安全性、高可靠性的嵌入式系统的目标码验证技术的支持还不够。基于源码的覆盖率统计分析工具大都基于插装算法实现的,有两种比较典型的覆盖率分析方法,一种是依赖于某种特定编译器的覆盖率分析工具,另一种是功能单一的覆盖率分析工具。
发明内容
本发明的目的在于提出一种针对多种处理器架构的非侵入式覆盖率统计方法,用于解决嵌入式软件目标码测试过程中无法难以获取覆盖率信息的问题。
本发明一种针对多种处理器架构的非侵入式覆盖率统计方法,其中,包括:搭建嵌入式软件仿真运行环境;解析多种架构目标文件及调试信息格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息;解析源代码获取源代码的分支信息;获取覆盖率信息,包括:仿真执行开始后,判断当前指令是否是分支指令,若不是,继续执行指令;如果是,以当前地址作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新覆盖率查询表;将覆盖率统计分析结果输出。
根据本发明的针对多种处理器架构的非侵入式覆盖率统计方法的一实施例,其中,定义调试信息格式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)将记录在覆盖率信息查询表中的信息以特定的格式写入到指定路径的文件中,并暂停仿真执行。
本发明的目的是提出一种针对多种处理器架构的非侵入式覆盖率统计方法,通过分析不同处理器架构下目标文件的类型和调试信息格式的类型,将不同类型调试信息格式转换为通用类型调试信息,并根据处理器虚拟化仿真系统获取覆盖率执行信息,最后完成覆盖率统计分析功能,弥补现有覆盖率统计分析工具的不足,满足多种场景下覆盖率统计分析的需求。
附图说明
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
本发明一种针对多种处理器架构的非侵入式覆盖率统计方法,包括:
搭建嵌入式软件仿真运行环境包括:
嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,并记录指令执行过程及分支信息,主要包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制。
解析多种架构目标文件及调试信息格式包括:
多种架构目标文件及调试信息格式解析主要解析主流嵌入式处理器所涉及得文件格式和调试信息格式,通过解析文件格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息。
主流嵌入式软件涉及多种调试信息格式,为了便于嵌入式软件覆盖率信息统计输出,定义一种新的调试信息格式(MidDebugInfo),并将多种调试信息解析后转换为该调试信息格式。调试信息主要包含文件信息、函数信息、源码目标码对应关系信息,其中文件信息包含文件名、文件路径、文件对应的目标码开始地址和目标码结束地址,函数信息包含函数名、函数开始地址及函数结束地址,源码目标码对应关系信息包含源码行数、及该行源码对应的目标码开始地址和目标结束地址。为了方便信息的记录和查询,建立以文件、函数、行号信息三级结构信息表,其中文件可包含多个函数,函数包含多个行号信息的三级覆盖率信息表;当需要更新覆盖率信息时,查询基本块(Basic Block)基本块所在的文件,之后查询基本块所在的函数,最后顺序遍历该基本块包含的目标码地址,然后更新该目标码区间的行号信息。
源代码分支信息解析包括:
源代码分支信息主要提供源代码分析信息获取的功能,嵌入式处理器汇编指令集包含多种分支指令,无法通过调试信息格式解析获取源代码的分支信息,通过分析源代码可获取源代码的分支信息。
覆盖率信息获取包括:
程序仿真执行过程中,取指和译码之后,能得到被执行指令的指令码。通过对执行码的判断,能够得到指令码是否是跳转指令以及跳转指令的类型。通过调试信息格式解析及源代码分析信息解析,可以得到指令对应的源码、跳转指令对应的源码以及跳转指令对应的类型。
在覆盖率信息获取过程中,为了减少覆盖率统计对仿真执行的影响,以目标码基本块(Basic Block)为最小统计单元,基本块的包含开始地址、结束地址、分支指令(BranchInstruction)地址、执行次数、分支信息,一个基本块包含一行或多行源码对应的目标码。
仿真执行开始后,判断当前指令是否是分支指令,若不是分支指令,继续执行;如果当前指令是分支指令,当前地址(Current Program Count)作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新覆盖率查询表。
覆盖率统计分析结果输出包括:
覆盖统计结果输出主要提供指令取指、译码、反汇编以及执行信息解析,最终生成覆盖统计分析结果。
对于本发明一种针对多种处理器架构的非侵入式覆盖率统计分析方法的一实施例,其具体步骤为:
搭建嵌入式软件仿真运行环境包括:
嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,并提供指令执行过程及状态的监测手段,是嵌入式软件异常处理测试用例的执行平台,主要包括:目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制。
其中,目标处理器内核指令集仿真采用基于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),否则,执行步骤(10);
源代码分支信息解析包括:
源代码分支信息主要提供源代码分析信息获取的功能,嵌入式处理器汇编指令集包含多种分支指令,无法通过调试信息格式解析获取源代码的分支信息,通过分析源代码可获取源代码的分支信息。
(10)获取源代码路径信息;
(11)根据三级查询结构表,逐个读入源文件,并对行号信息节点对应的源代码行的分支信息进行判断,获取源代码分支情况;
覆盖率信息获取包括:
程序仿真执行过程中,取指和译码之后,能得到被执行指令的指令码。通过对执行码的判断,能够得到指令码是否是跳转指令以及跳转指令的类型。通过调试信息格式解析及源代码分析信息解析,可以得到指令对应的源码、跳转指令对应的源码以及跳转指令对应的类型。
(12)嵌入式软件仿真运行环境采用虚拟化仿真技术实现目标系统的高精度高性能仿真,提供嵌入式软件的虚拟化运行环境,通过该环境构建嵌入式软件仿真运行环境;
(13)运行嵌入式仿真环境并加载目标文件到模拟内存中;
(14)仿真执行开始,并将执行开始地址作为第一个基本块的开始地址;
(15)读取指令、翻译指令、执行当前指令并判断当前指令是否为分支指令,若不是分支指令,继续执行步骤(15),若是执行步骤(16);
(16)当前指令对应的地址为基本块结束地址,记录当前基本块的开始地址、结束地址及分支指令的分支信息;
(17)以基本块的开始地址、结束地址为索引,查询当前基本块在三级覆盖率信息表中的位置,确定基本块对应的行号信息结构,将对应的行号信息结构执行次数加一并更新分支信息;
(18)判断是否生成覆盖率,若否,继续执行步骤(15),若是,执行步骤(19);
(19)将记录在覆盖率信息查询表中的信息以特定的格式写入到指定路径的文件中,并暂停仿真执行。覆盖率信息输出格式为:基本块开始地址、基本块结束地址、执行次数、分支指令地址、分支信息,中间以冒号分割;
覆盖率统计分析结果输出包括:
覆盖统计结果输出主要提供指令取指、译码、反汇编以及执行信息解析,最终生成覆盖统计分析结果。
(20)根据文件、函数、行号信息三级结构信息表,读取记录覆盖率信息的文件,并根据源代码和目标码对应关系及源文件分支信息,生成覆盖率统计分析结果。
本发明通过对软件目标文件的调试信息解析实现软件的调试,通过对DWARF信息的解析实现软件语句覆盖率、分支覆盖率统计。通过对故障类型抽象和模拟实现软件的故障注入,通过在模拟执行过程中统计被测程序语句执行的次数以及时钟数目实现软件的性能评估。词法分析过程中只处理虚拟化验证平台需要的信息,减少了词法分析器所消耗的时间。采用并行指令串行化思想解决DSP指令并行问题。覆盖率信息统计过程中只统计跳转指令信息,提高仿真器的执行效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (7)

1.一种针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,包括:
搭建嵌入式软件仿真运行环境;
解析多种架构目标文件及调试信息格式,获取处理器对应的调试信息格式,通过解析调试信息格式获取嵌入式软件源码目标码对应关系信息;
解析源代码获取源代码的分支信息;
获取目标码的覆盖率信息,包括:
仿真执行开始后,判断当前指令是否是分支指令,若不是,继续执行指令;如果是,以当前地址作为基本块结束地址,并以基本块开始地址和结束地址为索引,更新目标码的覆盖率查询表;
将记录在覆盖率查询表中的信息以特定的格式写入到指定路径的文件中,根据文件、函数、行号信息三级结构信息表,读取记录覆盖率信息的文件,并根据源代码和目标码对应关系及源文件分支信息,生成覆盖率统计分析结果;
将目标码的覆盖率统计分析结果输出;
其中,
定义调试信息格式MidDebugInfo,并将多种调试信息解析后转换为该调试信息格式MidDebugInfo,调试信息包含文件信息、函数信息以及源码目标码对应关系信息,其中文件信息包含文件名、文件路径、文件对应的目标码开始地址和目标码结束地址,函数信息包含函数名、函数开始地址及函数结束地址,源码目标码对应关系信息包含源码行数、及该行源码对应的目标码开始地址和目标结束地址;
在覆盖率信息获取过程中,以目标码基本块为最小统计单元,基本块包含开始地址、结束地址、分支指令地址、执行次数以及分支信息,一个基本块包含一行或多行源码对应的目标码。
2.如权利要求1所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,搭建嵌入式软件仿真运行环境包括:
目标处理器内核指令集仿真、嵌入式系统外设仿真以及仿真过程控制;
目标处理器内核指令集仿真采用基于LLVM的动态二进制编译方法实现目标指令在Windows/Intel宿主机架构下的异构执行,实现目标代码脱离原始硬件执行环境;嵌入式系统外设仿真用于实现目标处理器外围设备的仿真,包括RS-422、RS-485串口设备仿真、开关量设备仿真以及存储系统仿真;仿真过程控制采用统一的时钟调度算法实现虚拟环境各组成部分的执行控制与协同运行。
3.如权利要求1所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,解析多种架构目标文件及调试信息格式包括:
建立以文件、函数以及行号信息三级结构信息表;
(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),否则,开始解析源代码获取源代码的分支信息。
4.如权利要求3所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,解析源代码分支信息包括:
获取源代码路径信息;
根据三级查询结构表,逐个读入源文件,并对行号信息节点对应的源代码行的分支信息进行判断,获取源代码分支情况。
5.如权利要求3所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,覆盖率信息输出格式为:基本块开始地址、基本块结束地址、执行次数、分支指令地址以及分支信息。
6.如权利要求1所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,覆盖统计结果输出提供指令取指、译码、反汇编以及执行信息解析,生成覆盖统计分析结果。
7.如权利要求1所述的针对多种处理器架构的非侵入式覆盖率统计方法,其特征在于,获取覆盖率信息包括:
(a)运行嵌入式仿真环境并加载目标文件到模拟内存中;
(b)仿真执行开始,并将执行开始地址作为第一个基本块的开始地址;
(c)读取并翻译指令,执行当前指令并判断当前指令是否为分支指令,若不是分支指令,继续执行步骤(c),若是执行步骤(d);
(d)分支指令对应的地址为基本块结束地址,记录当前基本块的开始地址、结束地址及分支指令的分支信息;
(e)以基本块的开始地址和结束地址为索引,查询当前基本块在三级覆盖率信息表中的位置,确定基本块对应的行号信息结构,将对应的行号信息结构执行次数加一并更新分支信息;
(f)判断是否生成覆盖率,若否,继续执行步骤(c),若是,执行步骤(g);
(g)将记录在覆盖率查询表中的信息以特定的格式写入到指定路径的文件中,并暂停仿真执行。
CN202010636319.9A 2020-07-03 2020-07-03 一种针对多种处理器架构的非侵入式覆盖率统计方法 Active CN111813672B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010636319.9A CN111813672B (zh) 2020-07-03 2020-07-03 一种针对多种处理器架构的非侵入式覆盖率统计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010636319.9A CN111813672B (zh) 2020-07-03 2020-07-03 一种针对多种处理器架构的非侵入式覆盖率统计方法

Publications (2)

Publication Number Publication Date
CN111813672A CN111813672A (zh) 2020-10-23
CN111813672B true CN111813672B (zh) 2022-07-08

Family

ID=72855209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010636319.9A Active CN111813672B (zh) 2020-07-03 2020-07-03 一种针对多种处理器架构的非侵入式覆盖率统计方法

Country Status (1)

Country Link
CN (1) CN111813672B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380133B (zh) * 2020-11-20 2024-05-14 北京轩宇信息技术有限公司 一种指令集模拟器利用功能库仿真的方法及装置
CN112799942B (zh) * 2021-01-28 2023-08-22 上海航天计算机技术研究所 基于Keil C51的软件源码和目标码覆盖率分析方法和系统
CN116431518B (zh) * 2023-04-26 2023-09-26 北京计算机技术及应用研究所 一种基于仿真平台的多层级、多模式软件故障注入方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117730A1 (en) * 2011-11-04 2013-05-09 International Business Machines Corporation Integrated debugger and code coverage tool
CN104063321A (zh) * 2014-06-27 2014-09-24 北京控制工程研究所 一种针对MicroBlaze软核程序的测试验证系统及测试验证方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104657263B (zh) * 2015-02-10 2017-10-24 上海创景计算机系统有限公司 基于jtag调试方式实现通用型目标码覆盖率测试系统和测试方法
CN110580226B (zh) * 2019-09-23 2021-09-14 上海创景信息科技有限公司 操作系统级程序的目标码覆盖率测试方法、系统及介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117730A1 (en) * 2011-11-04 2013-05-09 International Business Machines Corporation Integrated debugger and code coverage tool
CN104063321A (zh) * 2014-06-27 2014-09-24 北京控制工程研究所 一种针对MicroBlaze软核程序的测试验证系统及测试验证方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Toward Rigorous Object-Code Coverage Criteria;Taejoon Byun;《2017 IEEE 28th International Symposium on Software Reliability Engineering》;20171026;全文 *
目标码流图和结构覆盖率获取方法;王勇;《计算机工程与设计》;20100616;全文 *

Also Published As

Publication number Publication date
CN111813672A (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
CN111813672B (zh) 一种针对多种处理器架构的非侵入式覆盖率统计方法
US7937692B2 (en) Methods and systems for complete static analysis of software for building a system
US8776029B2 (en) System and method of software execution path identification
US8832125B2 (en) Extensible event-driven log analysis framework
CN101739339B (zh) 一种基于程序动态依赖关系的软件故障定位方法
US8108839B2 (en) Method and apparatus for tracing execution of computer programming code using dynamic trace enablement
US20130318504A1 (en) Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams
US9626170B2 (en) Method and computer program product for disassembling a mixed machine code
US8032869B2 (en) Profiling method and computer product
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
US20070011664A1 (en) Device and method for generating an instruction set simulator
US20120131559A1 (en) Automatic Program Partition For Targeted Replay
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
US20180032320A1 (en) Computer-implemented method for allowing modification of a region of original code
US8347278B2 (en) Instrumenting a compiled software routine for augmentation
CN111813670B (zh) 一种非侵入式mc/dc覆盖率统计分析方法
US20200143061A1 (en) Method and apparatus for tracking location of input data that causes binary vulnerability
WO2017112127A1 (en) Data flow analysis in processor trace logs using compiler-type information method and apparatus
US7908596B2 (en) Automatic inspection of compiled code
CN109542444B (zh) Java应用的监控方法、装置、服务器和存储介质
Copik et al. Extracting clean performance models from tainted programs
Williams et al. Dyninst and mrnet: Foundational infrastructure for parallel tools
Durfina et al. Detection and recovery of functions and their arguments in a retargetable decompiler
CN116501378B (zh) 一种逆向工程还原源代码的实现方法、装置和电子设备
CN112395190A (zh) 一种针对多种处理器架构的非侵入式覆盖率统计方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant