基于变量关系图和符号执行的指针相关路径分析

来源 :中国科学院软件研究所 | 被引量 : 1次 | 上传用户:sycloverock
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件测试是保证软件质量的必要手段。由于基于用例运行程序进行测试低效且容易出错,人们从六十年代起就开始探索用例测试之外的其它软件质量保证手段。程序验证尝试以严格的定理证明方式确保程序正确。然而由于程序设计语言的复杂性,程序验证只用于证明一些关键的核心模块的正确性,而没有得到更广泛的应用。程序静态测试是介于程序验证和基于用例的测试之间的方法。静态测试不编译运行程序,仅依据规约或者规则对源码进行分析以检测程序中是否存在错误。静态测试不能证明程序的完全正确,但是可以作为动态测试的补充。目前关于程序静态分析的研究是软件工程研究的一个热点。 对程序进行静态测试,首先需要分析理解程序的行为。指针变量和存储模型紧密相关,不能简单地作为数值型变量予以处理。分析包含指针变量的程序一直是静态测试中需要解决的一个难题。本文提出的变量关系图这一抽象模型,一方面用于抽象地描述了程序的存储结构,另一方面也描述变量间的约束关系。和其它已经提出的抽象模型相比,变量关系图能够更深刻地揭示程序中变量间的约束关系。 针对包含指针以及结构类型变量的程序路径,我们提出了以变量关系图为基础,结合符号执行对其进行分析的方法。在符号执行中根据程序动作调整变量关系图的结构,同时根据程序中的条件生成相应的约束条件集合。通过考察符号执行中生成的变量关系图,可以检测程序中悬空指针引用、存储泄漏以及变量未初始化等具有一般性的错误。此外,通过对符号执行后求得的约束集合进行求解,我们还可以检查和具体程序相关的错误。 具体实现方面,在已有的路径分析工具PAT的基础上进行了扩展,使之能够处理包含指针类型和结构类型变量。利用变量关系图和符号执行,我们可以精确地获取程序的存储模型及变量间约束关系的信息,可以发现一些已有的分析工具不能发现的错误。此外,我们设计一个小的规约语言并实现相应的翻译工具,使得能够较为简洁地描述程序的规约。
其他文献
该文提出了一种多分辨率下的彩色图像分割算法.算法首先通过K均值量化降低颜色索引数目.为了克服直接量化时间开销大,以及颜色类接近的问题,采用了降采样后量化,合并相近类的
该文主要讨论了改造Linux系统,使其适用于嵌入式实时环境所要解决的最关键的问题——Linux内核的实时性,并给出了增强Linux内核实时性能的具体方案.首先,对数控系统和嵌入式
该文主要内容包括:第一章绪论.综述了二十世纪八十年代以来,有关谈判理论模型研究、谈判问题的研究方法、谈判支持系统研究现状,指出了目前NSS系统中存在的问题,并对今后这方
随着信息技术的迅速发展,互联网上的信息每天都在爆炸式地增长,人们在海量的信息面前显得无所适从,如何准确快速地获取需要的信息变成了困扰人们的难题。大量的研究表明,推荐系统
电动汽车的的市场和社会价值是不可小觑的。要想扩大对电动汽车的推广,使电动汽车能够抢占市场,首先要解决的问题就是电池技术和实现电动汽车快速充电的基础设施保障。本文主要研究的是电动汽车快速充电的基础设施这一部分。目前采用的方法对电动汽车进行充放电,谐波污染严重,功率因数低,且充电时间较长。本文根据电动汽车用电池特性,参考现用方法的基础上引入SVPWM控制和模糊PID控制,实现能量双向流动的同时,实现功
该文从不同的测试方法入手,首先对当前软件测试充分性的发展现状进行了研究,分析了它们的优劣之处.接着,我们重点研究了基于可信度的统计覆盖测试技术.这项测试技术较好地解
随着计算技术发展的推动和对计算机性能需求日益增强的拉动,多处理器系统的应用越来越普及。目前,大多数单片多核处理器产品采用基于总线结构的共享存储多处理器结构,相应的系统
在语义信息模型的研究中,本体论的分类思想逐渐被人们所接受,它提供了一种对概念及概念之间的关系的严格描述,以解决语义冲突.本体在Web的信息集成中得到广泛的应用.该文分析
文章共分为8个部分.第一部分介绍物流配送的基础知识.第二部分介绍智能规划的基本思想和技术.第三部分建立配送运输任务的抽象模型.第四部分用规划领域描述语言PDDL2.1对配送
近年来,数据挖掘引起了信息产业界的极大关注,其主要原因是很多领域中的数据量以极快的速度增长,我们迫切需要将这些数据转换成有用的信息和知识。时间序列的分析是数据挖掘领域