APP下载

大型嵌入式软件设计中的缺陷定位技术研究

2017-09-07王力群缪兴华

现代电子技术 2017年16期
关键词:软件设计

王力群 缪兴华

摘 要: 传统方法检测软件设计中的整型符号转换缺陷时,只能检测到缺陷的“征兆”,无法检测到缺陷的根源,无法准确定位整型符号转换缺陷形成的位置。因此,提出基于动态方法的嵌入式软件设计中缺陷定位技术。其构建在二进制插桩框架Valgrind上,采用种类推导方法检测整型变量的符号种类信息,通过种类推导方法辨识整型变量的符号种类信息,获取内存相关库函数为冲突种类参数的集合,将其作为潜在整型符号变换缺陷候选集。通过动态插桩技术检测候选集,准确检测整型符号转换缺陷代码的位置。实验结果表明,所提方法准确检测出了整型符号转换缺陷,性能较高。

关键词: 大型嵌入式软件; 软件设计; 整型符号转换; 缺陷定位

中图分类号: TN926?34; TP311.52 文献标识码: A 文章编号: 1004?373X(2017)16?0083?03

Abstract: The integer notation for detecting the transformation defect in the design of the traditional software detection method can only detect the "symptoms" of the defect, but can't detect the root cause of the defect, so it is unable to pinpoint the position formed in the process of the integer notation transformation defect. Therefore, the defect positioning technology in the embedded software design based on dynamic method is put forward. It is constructed on the binary pile framework Valgrind to detect symbol type information of integer variables by the sort derivation method. The species derivation method is used to identify the symbolic sort information of the integer variables, and obtain the conflict species parameter set in memory related library function, which will be taken as a potential candidate set of integer notation transformation defect. The dynamic pile technique can accurately detect the position of integer notation transformation defect code by detecting the candidate set. The experimental results indicate that the proposed method can accurately detect the integer notation transformation defects.

Keywords: large embedded software; software design; integer notation transformation; defect positioning

如今的大型软件开发中存在复杂性和抽象性缺陷,受到嵌入式系统时间以及空间资源有限的干扰,导致检测大型嵌入式软件缺陷的难度不断提升。而软件设计中的整型符号转换缺陷较多,该种缺陷的隐蔽性强,同其他缺陷融合,会形成内存缺陷,对程序造成严重损害[1]。传统方法检测该种缺陷时,只能检测到缺陷的“征兆”,无法检测到缺陷的根源。因此,寻求有效的方法,检测大型嵌入式软件设计中的整型缺陷,具有较高的应用价值。

1 动态方法嵌入式软件设计中的缺陷定位技术

1.1 整型符号转换缺陷

本文方法检测整型符合转换缺陷过程中,应先截获内存相关库函数,检测整型参数的符号种类。定义需要截获的内存相关库函数和潜在函数,如表1所示。

表1 潜在函数列表

1.2 总体设计

本文方法在二进制级别上对符号转换错误产生的缓冲区溢出缺陷实施检测。检测整型符号转换缺陷时,应先获取程序变量的符号种类信息[2?3],再采集引发符号冲突的指令地址,对缺陷形成的位置实时定位[4]。设计的缺陷检测系统构建在二进制插桩框架Valgrind上,將整型符号检测转换缺陷的检测方法应用到原型工具Sconveheck的实现中。系统总体架构如图1所示。

图1中描述的系统包括Valgrind内核部分和原型工具Sconvcheck,Valgrind内核可同底层参照系统完成交互。Sconvcheck提供的功能能够完成符号转换缺陷的检测和定位。

总体系统的运行流程是:将二进制代码变换成中间描述形式(VEX,IR),为分析指令的隐藏信息提供依据[5];在中间代码层面中,检测各条中间代码指令,采集变量存储单元中涵盖的符号种类信息;收集内存相关函数定义,得到少数参数的符号种类信息,对这些映射关系实施初始化设置;采用数据流分析各变量的符号种类信息,存储变量符号信息。后续得到新种类符号时,将其同前期获取的符号种类进行对比[6],如果不一致,则说明是冲突种类,存储当前指令;通过种类推导方法检索潜在符号缺陷候选集,依据存储的符号种类信息对整型符号变换缺陷代码实时定位。endprint

原型工具Sconvcheck的运行流程由信息采集、检测方案和缺陷定位三部分组成,其中的符号种类信息采集流程,如图2所示。

1.3 检测方案

基于图2描述的符号种类信息采集过程,能够获取包含冲突种类的单元存储单元集。将其当成潜在的符号变换缺陷候选集。还应采用检测方案对整型符号变换缺陷进行进一步辨识。符号转换缺陷同内存缓冲区溢出相关,内存相关库函数的参数如果是冲突种类,则说明出现了符号转换缺陷。整型符号转换缺陷的检测方案的流程如图3所示。

从图3可以看出,检测方案得到内存相关库函数的调用后,便得到描述内存分配长度的全部参数存储单元。采用映射表检索相关的符号种类信息:如果是冲突种类,则在符号前插入检测代码,在程序运行过程中检测传递的实参是否是负数;如果不是冲突种类,则结束检测;否则,呈现运行过程中将负数反馈给冲突种类参数的现象判定成实际的符号变换缺陷。

1.4 缺陷定位

采集符号种类信息时既要采集变量的符号种类信息,也要在存在冲突种类信息时将当前指令地址信息存储下来。若变量被辨识成冲突种类,则用当前操作指令地址替换前期记录的地址信息,依据新指令地址信息对缺陷代码实施定位。检测方案检测到整型符号转换缺陷时,采集变量信息,并对映射表进行检测,将获取的指令地址信息当成产生缺陷的指令地址。基于该指令地址信息能够获取整型符号转换缺陷代码位置信息。上述描述的整型符号变换缺陷定位流程图,如图4所示。

2 实验分析

实验采用本文方法对E?mail服务器thrownmial7.7.2实施检测,结果如表2所示。能够看出本文方法有效檢测出了thrownmial7.7.2的中的缓冲区溢出以及整型符号转换缺陷,并对检测出的缺陷给出警告。

表2 本文方法的缺陷检测结果

实验选择三种待测程序,使它们分别运行在正常状态下、Buffcheck以及本文方法中的工具Valgrind下,检测不同程序的运行效率,分析不同状态下的程序运行性能,结果如表3所示。

分析表3可得,待测程序在本文方法下的运行速率比正常运行下和其他状态下高,说明本文方法在提高程序运行效率方面具有较强的优越性和较高的性能。

3 结 论

本文提出了基于动态方法的嵌入式软件设计中的缺陷定位技术,其采用面向二进制程序整型符号变换缺陷检测方法,对整型符号变换引起的缓冲区溢出缺陷进行准确定位。结果表明,所提方法准确检测出了整型符号转换缺陷,性能较高。

参考文献

[1] 林永峰,陈亮.面向安全性分析的嵌入式软件测试方法研究[J].现代电子技术,2016,39(13):80?83.

[2] 蔡红梅.嵌入式船舶人员落水搜救控制系统的设计与研究[J].舰船科学技术,2015,37(11):155?159.

[3] 张琴.基于瞳孔定位技术的视觉跟踪系统的研究[J].微型机与应用,2016,35(4):54?56.

[4] 常佩佩,赵逢禹.基于代码结构信息的软件缺陷定位方法研究[J].计算机应用研究,2016,33(8):2371?2374.

[5] 王赞,樊向宇,邹雨果,等.一种基于遗传算法的多缺陷定位方法[J].软件学报,2016,27(4):879?900.

[6] 付佩儒,谢鹏.嵌入式软件中断数据竞争安全性检测技术研究[J].航天控制,2015,33(3):79?82.endprint

猜你喜欢

软件设计
CAN总线通信技术在电梯监控系统中的应用
基于单片机SPCE061A的字幕机点阵式字母电子显示屏的设计制作
电力参数监测系统研究
基于STM8S903K3的序列打螺丝夹具的软件设计
一种VHDL语言代码重用的方法
系统工程方法在计算机软件设计中的应用分析
基于Java语言的手机软件开发技术分析
计算机软件可维护性路径研究
智能温室控制系统的研究与开发