[发明专利]一种基于Delta Debugging与约束求解的并发程序缺陷定位方法有效
申请号: | 201911006930.7 | 申请日: | 2019-10-22 |
公开(公告)号: | CN110851353B | 公开(公告)日: | 2023-03-31 |
发明(设计)人: | 魏广宁;王赞 | 申请(专利权)人: | 天津大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 天津市北洋有限责任专利代理事务所 12201 | 代理人: | 李素兰 |
地址: | 300072*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 delta debugging 约束 求解 并发 程序 缺陷 定位 方法 | ||
本发明公开了一种基于Delta Debugging与约束求解的并发程序缺陷定位方法,利用内存访问模式来抽象程序执行轨迹(Trace)来帮助程序开发人员理解错误原因,利用Delta Debugging方法快速找到导致并发程序失败的内存访问模式集合,以及利用约束求解技术生成满足要求的可执行程序轨迹(Trace)。本发明利用Delta Debugging算法,可以快速准确定位到导致错误的原因;利用约束求解技术可以高效找到符合要求的可执行程序序列,进一步提高定位速度。
技术领域
本发明属于软件工程和软件测试领域,尤其涉及一种基于约束求解的并发程序错误定位方法。
背景技术
由于并发程序的状态空间巨大,程序线程交错复杂,对于并发程序缺陷定位一直是困扰学术界和产业界的问题。为了解决或者部分解决并发程序缺陷定位速度慢,定位准确度低的问题,已经有很多方法提出。这些方法根据是否正真执行并发程序可以被分成静态方法、动态方法和混合方法三类,当然也存在一些其他分类方法。其中:静态方法并不真正执行并发程序,一般是通过对程序源代码分析或者对已经收集到的程序执行轨迹进行分析从而定位到导致程序错误的原因;而动态方法一般通过插装(Instrumentation)的方式将相关的分析程序插入到程序源代码中,在通过执行修改过的源码获得更多的信息,从而找到导致错误的根本原因。然而无论是静态方法还是动态方法都有一定的缺陷,静态方法由于无法真正运行程序,可能会错误估计实际无法产生的错误,从而产生假阳性(FalsePositive)的问题,也就是定位到的原因实际上不会导致程序失败,而动态方法由于要执行程序,一般由于时间的缘故,无法覆盖到全部的状态空间,可能会有假阴性(FalseNegative)的问题,也就是找到的导致程序失败的原因不完全。
为了克服以上的问题,混合方法综合静态方法和动态方法的优点,一般先通过静态分析程序源代码定位到错误原因,在通过动态方法进行验证,减轻误报问题,然而混合的方法的缺点是实现比较复杂,不利于理解。
发明内容
本发明旨在解决并发程序缺陷定位中定位精度差,定位速度慢的问题,本发明提出一种基于Delta Debugging与约束求解的并发程序缺陷定位方法,通过将包含并发缺陷的程序抽象成内存访问模式集合,再利用Delta Debugging和约束求解方法快速找到导致并发程序错误的内存访问模式的最小集合从而定位到导致并发程序缺陷的根本原因。
本发明的一种基于Delta Debugging与约束求解的并发程序缺陷定位方法,整体流程包括以下步骤:
步骤一、给定一个并发程序;
步骤二、利用程序调度器,不断按照随机调度的方法执行程序直到时间达到设定的阈值,得到多条程序执行轨迹Trace,从中选出一条正确执行轨迹Trace p和一条错误执行轨迹Trace f,p,f之间满足关系:在所有收集到的正确执行轨迹集合P和错误执行轨迹集合F中,令diff(f,p)表示一条错误执行轨迹f与正确执行轨迹p的差异;作为流程的输入;每条轨迹Trace都是执行语句的集合,而语句用一个四元组(ti,si,ri,wi)来表示,其中,ti表示线程i,si表示执行代码中的第i行代码,ri表示读取变量的集合,wi表示写变量的集合;
步骤三:提取程序执行轨迹中的内存访问模式集合S,即:从正确轨迹序列p中提取出的内存访问模式集合为Sp,从失败轨迹序列f中提取出的模式集合为Sf;提取内存访问模式的过程为:首先利用贪心算法,构建长度为2的内存访问模式,然后利用所有长度为2的模式,拼接成长度为3和4的模式,同时删除组成它们的长度为2的模式,最后将拼接出的长度为3和4的模式,以及不是任意其他模式组成部分的长度为2的模式整合到一起,就获得了是最终从轨迹Trace中提取的内存访问模式;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911006930.7/2.html,转载请声明来源钻瓜专利网。