C分析工具中程序切片和变换的设计与实现

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:zengqz
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
当今计算机技术的发展日新月异,软件在我们的生活中扮演着水和电的重要角色。C语言作为一门广泛应用的语言,已有40多年的历史,它在系统软件如操作系统、编译器、数据库等领域中仍然具着强劲的优势,在保持底层运行效率的同时,它也给程序员带来一些负担,程序员需要关注内存泄露、空指针和悬空指针解引用、缓冲区溢出等问题。目前提高软件可靠性和安全性的方法主要有程序验证、动态测试和静态分析。程序验证目前还未实现完全的自动化证明,动态测试的精确性和覆盖率受到测试集的很大影响,且运行时的检查成本和风险相对较高,静态分析则是比较精确和经济的手段。在静态分析领域中,符号执行被广泛用于测试例的自动生成,它的主要思想是对代码中变量的取值进行符号化,模拟执行程序中所有可能的路径,因此随着程序中的控制结构变得越来越复杂,所需执行的状态数目将急剧增加,严重影响分析工具的伸缩性。针对状态爆炸问题,本文提出了两种在符号执行的不同阶段的优化方法来缓解。第一,使用针对缺陷的程序切片技术对被测程序的中间表示做预处理。首先根据用户关心的缺陷生成源程序的切片准则,然后分析源代码生成数据依赖图和控制依赖图,由两者共同构成程序依赖图,再根据切片准则做程序切片,将源程序规模缩小,最后将切片后的程序交给程序分析工具分析。第二,在符号执行引擎执行过程中对无副作用的控制结构做程序变换。在静态分析工具执行到某个函数时,先分析该函数的所有控制结构,如果某控制结构对程序的后续执行没有影响,则将该控制结构简化,为了不影响分析精度,将工具要检测的缺陷语句提出,这样减少了路径数目,提高了工具的分析性能。笔者所在的课题组目前已实现了一个基于符号执行的C程序静态分析工具,应用本文提出的优化方法,该静态分析工具的分析性能获得了较为明显的改善。
其他文献
随着信息技术的迅猛发展,人们可以通过互联网从世界各地接收和发送信息,而信息交换过程中的一个突出问题就是数据格式的异构性,这将极大地阻碍对信息进行有效地使用。XML的出现
社会网络是指社会个体成员之间因为互动而形成的相对稳定的关系体系,其中联系较为紧密的团体称为社区,处在同一社区中的个体更易于受到社区内其他人的影响,而社区挖掘技术就是挖
肺癌是严重威胁人们生存的疾病,目前,已经跃居成为世界恶性肿瘤病例的第一位。而计算机辅助诊断系统(CAD)对早期肺癌的发现和诊断有十分重要的价值。肺区域分割作为基于医学影
网络游戏现在已经进入三维网络游戏的时代,它以逼真的画面,巨大的游戏场景赢得了玩家的认可。由于游戏规模越来越大,在线人数增多,使得网络延时、丢包和集群的负载均衡等问题越来
支持向量机是由Vapnik等人基于统计学习理论提出的一种新型的机器学习方法。支持向量机基于结构风险最小化原理,综合考虑了经验风险和置信风险,具有良好的泛化能力和较高的分
随着互联网的迅速发展,网络上的信息成爆炸式增长。自从Tim Berners-Lee提出Web2.0的概念之后,用户从被动的接受信息逐渐转变成信息发布的参与者。社会标签是Web2.0的众多应用
随着计算机网络技术的发展,为了满足视频点播、网络会议、网络实时游戏等多媒体应用这些当今因特网的主流业务,急需建立一种高效的、有QoS保障的数据通信机制。建立这种机制主
近年来,不确定数据的管理吸引了来自工业界和学术界的极大关注,特别在诸如无线传感器网络、生物技术和生物数据库、基于位置的服务和数据流等新兴的领域中。为了准确获取不确定
数据挖掘是指从分散的异构信息中获取知识的过程,其直接目的是快速检索有用信息,将数据挖掘与Web结合形成的Web信息挖掘是处理海量Web信息的有效手段。虽然Web信息挖掘能极大
时空数据库技术是计算机科学的新兴领域。由于时空数据库本身的一些特性,所以被广泛应用到多种领域。本文重点比较了适用于网络中移动对象轨迹查询的索引结构,提出了一种适用于