一种安全关键嵌入式软件目标码覆盖率分析方法转让专利

申请号 : CN201610681532.5

文献号 : CN106445803B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜林武方方徐建军赵亮颜纪迅张丹涛

申请人 : 中国航空工业集团公司西安飞行自动控制研究所

摘要 :

本发明属于目标码语句覆盖率分析技术,具体涉及一种安全关键嵌入式软件目标码语句覆盖率分析方法。本发明安全关键嵌入式软件目标码覆盖率分析方法将程序编译成带有调试信息的目标码,在目标码测试前,通过选择需要测试的函数,由监控模块自动在函数的出入口处插入断点。在目标码测试过程中,当运行至第一个断点处时,由目标机记录已执行的每条目标码并在下次触发断点时由监控模块控制目标机通过通信链路将已执行目标码发送回宿主机,当宿主机收反馈时,通过与编译后的二进制目标码进行比对并标识已执行的二进制目标码。当测试结束时,通过计算目标码执行率的方式获取目标码的语句覆盖率。

权利要求 :

1.一种安全关键嵌入式软件目标码语句覆盖率分析方法,将程序编译成带有调试信息的目标码,在目标码测试前,通过选择需要测试的函数,由监控模块自动在函数的出入口处插入断点;在目标码测试过程中,当运行至第一个断点处时,由目标机记录已执行的每条目标码并在下次触发断点时由监控模块控制目标机通过通信链路将已执行目标码发回宿主机,当宿主机接收到已执行目标码信息时,通过与二进制目标码进行比对并标识已执行的二进制目标码;当测试结束时,通过计算目标码执行率的方式获取目标码的语句覆盖率;具体步骤如下:步骤1在测试前,对程序进行编译,并选择需要测试的函数,监控模块自动在函数的入口及出口处插入断点;

步骤2当目标码执行到函数入口断点产生中断时,监控模块连续控制目标机执行单步指令,直到触发函数出口断点,当目标机进入单步异常时,异常处理模块会记录当前PC指针所指向二进制目标码;

步骤3当目标码执行到函数出口断点产生中断时,监控模块控制目标机将这一阶段的所有已执行二进制语句发送回宿主机;

步骤4宿主机通过编译生成的二进制目标码与目标机实际运行的目标码进行比对,可得出未执行的语句及目标码覆盖率。

说明书 :

一种安全关键嵌入式软件目标码覆盖率分析方法

技术领域

[0001] 本发明属于目标码语句覆盖率分析技术,具体涉及一种安全关键嵌入式软件目标码语句覆盖率分析方法。

背景技术

[0002] 对于安全关键嵌入式软件而言,目标码覆盖率是考量其安全性的重要指标之一,在高安全领域认为系统的设计到实现以及目标环境运行的目标码需做到一一对应。然而目前业内缺少有效的目标码分析的手段,往往需要人工对目标码进行分析,以保证目标码的安全性。因此如何通过一种自动化的方式完成目标码的覆盖率分析不但能够保证产品的质量,而且能够提高测试验证的效率。
[0003] 专利《一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法》专利号CN201410381755.0中利用CPU模拟器进行目标码覆盖率测试,然而该方法需依托CPU模拟器,并不是真是的物理硬件环境。本方法依托真实的物理环境得出的覆盖率较之更具有可信性。
[0004] 专利《基于JTAG调试方式实现通用性目标码覆盖率测试系统和测试方法》专利号CN104657263A中利用JTAG仿真器的方式进行目标码覆盖率测试,然而该方法需要依赖具有JTAG口的目标环境及仿真设备。本方法较之不需要使用额外的调试硬件设备,在应用上具有更高的灵活性。

发明内容

[0005] 本发明属于目标码语句覆盖率分析技术,具体涉及一种安全关键嵌入式软件目标码语句覆盖率分析方法。本发明安全关键嵌入式软件目标码覆盖率分析方法将程序编译成带有调试信息的目标码,在目标码测试前,通过选择需要测试的函数,由监控模块自动在函数的出入口处插入断点。在目标码测试过程中,当运行至第一个断点处时,由目标机记录已执行的每条目标码并在下次触发断点时由监控模块控制目标机通过通信链路将已执行目标码发送回宿主机,当宿主机收反馈时,通过与编译后的二进制目标码进行比对并标识已执行的二进制目标码。当测试结束时,通过计算目标码执行率的方式获取目标码的语句覆盖率,从而达到对目标码语句覆盖率的分析以及发现代码缺陷的效果;具体步骤如下:
[0006] 步骤1在测试前,对程序进行编译,并选择需要测试的函数,监控模块自动在函数的入口及出口处插入断点
[0007] 步骤2当目标码执行到函数入口断点产生中断时,监控模块向控制程序继续发送单步指令,当目标机进入单步异常时,异常处理模块会记录当前PC指针所指向二进制目标码。
[0008] 步骤3当目标码执行到函数出口断点产生中断时,监控模块控制目标机将这一阶段的所有已执行二进制语句发送回宿主机;
[0009] 步骤4宿主机通过编译生成的二进制目标码与目标机实际运行的目标码进行比对,可得出未执行的语句及目标码覆盖率。
[0010] 本发明具有的优点和有益效果:本发明属于目标码语句覆盖率分析技术,具体涉及一种安全关键嵌入式软件目标码语句覆盖率分析方法。本发明安全关键嵌入式软件目标码覆盖率分析方法将程序编译成带有调试信息的目标码,在目标码测试前,通过选择需要测试的函数,由监控模块自动在函数的出入口处插入断点。在目标码测试过程中,当运行至第一个断点处时,由目标机记录已执行的每条目标码并在下次触发断点时由监控模块控制目标机通过通信链路将已执行目标码发送回宿主机,当宿主机收反馈时,通过与编译后的二进制目标码进行比对并标识已执行的二进制目标码。当测试结束时,通过计算目标码执行率的方式获取目标码的语句覆盖率,从而达到不需借助额外的调试硬件通过对目标码在真实环境运行的监控完成对目标码语句覆盖率的分析以及发现代码缺陷的效果。

附图说明

[0011] 图1是安全关键嵌入式软件目标码语句覆盖率分析方法的总体流程图;

具体实施方式

[0012] 下面结合说明书附图对本发明具体实施方式做进一步说明。总体流程图见图1,具体步骤如下:
[0013] 步骤一在测试前,对某源码进行编译,获取到二进制码9421FFE8(地址0x04001c50)、93E10014、7C3F0B78、7C601B78、7C892378、B01F0008、7D204B78、B01F000A、A13F0008、A01F000A、7C090214、B01F000C、A01F000C、7C000734、7C030378、81610000、
83EBFFFC、D615B78、4E800020(地址0x04001c98),并在函数入口9421FFE8指令前及函数出口4E800020后插入断点
[0014] 步骤二当目标码执行到地址0x04001c50产生中断,监控模块控制目标机进行单步,当目标机进入单步异常时,异常处理模块以此记录当前PC指针所指向的目标码9421FFE8、93E10014、7C3F0B78、7C601B78、7C892378、B01F0008、7D204B78、B01F000A、A13F0008、A01F000A、7C090214、B01F000C、A01F000C、7C000734、7C030378、81610000、
83EBFFFC、D615B78、4E800020。
[0015] 步骤三当目标码执行到地址0x04001c98产生中断,监控模块控制目标机将这一阶段的所有已执行二进制语句发送回宿主机;
[0016] 步骤四宿主机通过被测函数二进制目标码与目标机实际执行语句进行对比,此例中目标机执行语句与被测函数二进制目标码完全吻合,因此语句覆盖率为100%。