C语言资源泄漏检测分析系统的设计与实现

来源 :南开大学 | 被引量 : 0次 | 上传用户:laoyoutiaosc
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着软件系统规模的日益增大,软件系统的结构也变得日趋复杂,保证软件系统的质量也逐渐成为软件技术研究的重点。调查研究表明,软件的资源泄漏故障是影响软件系统质量的主要原因,因此对资源泄漏故障的检测和研究具有重要意义。虽然Java等语言有较完善的资源回收机制,但是C语言由于其高效性和灵活性,在很多领域有不可替代的作用。目前,针对源码进行检测分析的方法中,静态分析方法由于其突出的优势被许多业内学者认可。所以,对C语言资源泄漏的静态检测分析具有重要的理论和实践意义。  本文首先对资源泄漏的相关背景、静态分析的原理和方法、现有资源泄漏静态分析工具的研究现状做了介绍,然后在此基础上对函数内分析方法、函数间分析方法、漏洞定位和可视化方法进行了研究。  在上述研究基础上,本文设计并实现了针对C语言内存泄漏和文件旬柄丢失漏洞的静态分析系统,通过预处理模块对C语言源码进行解析,构造对应的控制流图,并在此基础上进行数据流分析,获取资源的前向切片,若某资源没有对应的释放点,则判定存在一处资源泄漏,否则,在前向切片的基础上进行后向遍历,并基于控制流图进行符号执行,合并不影响资源分配释放的路径,获取与资源分配释放相关的数据流条件,得到函数内资源行为切片MFG。在进行函数间分析时,根据函数间调用关系,深度优先遍历分对被调用函数进行函数内分析,将分析结果总结成函数摘要,在函数内MFG基础上增加调用函数和被调用函数间的入口边和返回边,并根据函数摘要进行函数实例化,完成函数间分析。然后通过约束求解器求解,根据资源泄漏模式得出检测结果。最后,根据漏洞定位算法,在数据流分析值流条件的基础上,逆向推导出漏洞所在位置,定位漏洞并图形化显示漏洞路径和函数控制流图。  实验表明,本系统具有较高的检测效率和可用性,在C语言资源泄漏静态分析方面有实际意义。
其他文献
人脸识别作为一种新兴的生物特征识别技术,具有重要的理论意义和应用价值。近年来,人脸识别的研究已经取得了一定的突破。然而,因为人脸识别的复杂性,在研究工作中还存在着大量的
无线Mesh网络的工作原理是利用邻居节点对数据进行转发和传输,网络中各节点之间的地位是对等的,通过多跳来建立连接。无线Mesh网络中可能会存在恶意节点,这些节点对于网络的安全
当前,WEB技术在网络上的应用日益广泛,其中使用JAVA的WEB开发者飞速增长,J2EE已经变成WEB开发的主流平台之一。但是怎样能在开发过程中减少代码重复、降低代码复杂性,提高系统的
学位
学位
在目前的应用系统发展过程中,存在两种系统结构:C/S和B/S。基于Web的应用系统,在Internet/Intranet技术推广以来得到了迅速发展。无论是公司、机构的内部信息管理系统,还是网络上
地下管线是城市和大型工业企业的基础设施的重要组成部分,是维持城市和大型工业企业正常运转和生产活动的大动脉。对地下管线进行信息化动态管理,对于地下管线的安全、正常运行
学位
蚁群算法作为计算智能研究的一个崭新分支,已在数据挖掘、机器学习、自动控制、故障诊断等诸多领域显示出强大的信息处理和问题求解能力以及广阔的研究前景。将人工蚁群算法与
企业应用一般都由大量运行在不同操作系统,多个层面上的应用系统组成。企业应用系统是否能快速适应商务逻辑的变动,已经是企业获得成功的关键所在。面向服务的架构(SOA)具有动
随着移动增值业务的不断丰富,移动增值业务系统应该朝着综合统一的方向发展,为SP/CP提供统一的业务接入手段;对各种增值业务进行统一管理、统一控制、综合计费;为未来3G网络中各