程序自动化调试的多谓词开关方法

来源 :中山大学 | 被引量 : 0次 | 上传用户:aglusaiy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序调试是软件开发过程中最关键的环节之一,调试的开销将直接影响到软件的成本和软件公司的收益。对于程序员来说,调试也是一个非常单调乏味的工作。因此,程序的自动化调试方法成为了计算机领域的热点课题,得到不同领域众多研究者的关注,继而出现了各种各样的自动化调试方法,如算法调试、切片技术、基于模型调试、基于概率调试、基于程序状态调试、Delta调试等等。   现有的大多数调试技术都是经验性的,即依靠专家经验和一些启发式性质。为此,刘咏梅教授分析了要基于第一原理为程序调试建立一个精确的理论基础的重要性。本文研究的起点是张翔宇教授等人提出的一种程序调试的单谓词开关方法,其主要思想是通过改变程序运行过程中的一个谓词实例的取值使得原来错误的程序最终运行得到正确的结果,然后根据被开关的谓词利用切片技术来确定诊断范围。但很多情况下,只对单个谓词实例进行开关并不能够使程序得到正确的运行。针对单谓词开关算法的局限性,本文提出有界调试的多谓词开关算法(bounded debugging via multiple predicate switchingalgorithm,BMPS),通过在程序运行过程中开关多个谓词实例来得到一个正确的运行,且在此运行中每个循环的执行次数不超过一个给定的上界。BMPS算法可以通过一个可满足性(satisfiability,SAT)求解器来实现。   文中讨论的程序错误主要为右端(righthandside,RHS)错误,即错误出现在控制谓词或者赋值语句的右边。对于只含条件控制语句的程序,本文证明了BMPS算法对于RHS错误是准完备的,即真实错误的部分语句一定会被BMPS算法返回。对于含循环的程序,本文证明了当循环展开的次数足够大时,BMPS算法对于RHS错误是准完备的。   本文对所提BMPS算法进行了初步的实验评估。本文深入分析了调试领域权威标准西门子标准中的TCAS程序,得出TCAS程序的41个错误版本中有39个版本是RHS错误。本文还对大量小型错误C程序进行了调试实验,实验结果表明BMPS能够有效地锁定错误。
其他文献
随着传感器技术、数据处理技术以及无线通信技术等的迅猛发展,信息对人们越来越重要,得到信息的途径越来越多。无线传感器网络是新兴的一种网络方式,该网络技术发展很快,并且
国际权威T.G. Dietterich将集成学习列为机器学习四大研究方向之首。泛化能力是评价机器学习算法好坏的重要指标。集成学习通过某种策略组合分类算法,能够有效地提高算法的泛
地形辅助惯性导航在现代军事技术中占据着十分重要的地位,图像匹配是基于景象匹配的地形辅助导航中的关键模块,匹配的基本方法是按像素点遍历搜索,匹配精度很高但计算量庞大,
本文分析了天气雷达软件系统的现状以及相关的项目背景,通过对新一代双偏振天气雷达的快速发展、气象业务对雷达产品生成软件需求和现有系统中实际存在的问题进行讨论进而引入
无线传感器网络的拓扑控制对于WSN具有重要的理论意义和现实应用价值,可分为两个方面:功率控制和层次拓扑结构控制。层次拓扑控制主要是利用分簇算法,根据一定的原则选择部分
随着制造业的不断发展,我国中小型SMT(Surface Mount Technology)企业如雨后春笋般涌现,然而其中大部分企业在信息化方面却跟不上时代的步伐。对很多中小型SMT企业而言,为提
代码安全缺陷一直是困扰IT产业发展的一颗绊脚石,究其缘由主要是安全缺陷检查的成本高,效率低下。目前主要靠手工或者工具两种方式来应对此问题,人工的效率比较低,靠工具来检
随着现代科学技术的发展,科研问题的复杂度越来越高,单一的科学家甚至单个实验室往往难以提供完成一个复杂科研项目所需的所有人力和物力资源。同时,各学科的研究人员也希望
现代服务业以高新技术和现代管理理念为支撑,其发达程度已成为衡量经济、社会现代化水平的重要标准。在服务支撑技术日趋蓬勃发展的同时,服务行业的竞争迫使服务企业寻求提高
互联网是复杂巨系统,是现代信息社会的基础设施,互联网行为影响我们每个人的工作和生活,同时互联网的行为在不停地变化并且是不可预测的。随着网络技术的发展,许多新型的网络