【技术实现步骤摘要】
一种基于约束求解的原子集合序列化违背探测方法
本专利技术涉及一种基于约束求解的原子集合序列化违背探测方法,属于软件测试
技术介绍
多核处理器的快速发展以及高级编程语言对并发编程的支持使得并发程序的开发和使用日益广泛。但由于并发程序执行的不确定性,使得并发错误难以理解、调试、重演和修复。原子违背是一种常见的并发程序错误,约占非死锁类型并发错误的65%。目前,原子违背探测技术,大多只针对单变量的原子违背,涉及多个共享变量的原子违背即原子集合序列化违背探测方法较少。研究表明,约1/3的原子违背错误是由于对多个共享变量的并发访问所引起的。现有的原子集合序列化违背探测技术大致分为三类:静态探测技术、运行时监测技术和运行时预测技术。静态探测技术从程序源码级别进行原子集合序列化违背的探测,由于缺少程序的动态执行信息,该方法误检率较高。运行时监测技术在程序执行过程中探测在程序实际执行序列中暴露出的原子集合序列化违背,该方法误检率低,但该方法因仅考虑单个执行轨迹,漏报率较高。运行时预测技术首先记录并发程序的一个动态执行轨迹,然后在特定约束条件下静态地生成该执行轨迹的其他交 ...
【技术保护点】
1.一种基于约束求解的原子集合序列化违背探测方法,其特征在于,包括以下步骤:步骤1)获得待测并发程序的一条真实执行轨迹;步骤2)利用步骤1)获得的真实执行轨迹,分析确定工作单元和原子集合,并利用工作单元和原子集合中的事件组成原子集合序列化违背的各种错误模式,收集潜在的可能会引起不可序列化交织的事件序列;步骤3):建立原子集合序列化违背约束;步骤4)原子集合序列化违背约束求解。
【技术特征摘要】
1.一种基于约束求解的原子集合序列化违背探测方法,其特征在于,包括以下步骤:步骤1)获得待测并发程序的一条真实执行轨迹;步骤2)利用步骤1)获得的真实执行轨迹,分析确定工作单元和原子集合,并利用工作单元和原子集合中的事件组成原子集合序列化违背的各种错误模式,收集潜在的可能会引起不可序列化交织的事件序列;步骤3):建立原子集合序列化违背约束;步骤4)原子集合序列化违背约束求解。2.根据权利要求1所述的一种基于约束求解的原子集合序列化违背探测方法,其特征在于,步骤1)的具体过程如下:步骤11)对待测程序进行插桩;步骤12)执行插桩后的待测程序,得到一条真实的执行轨迹,一条执行轨迹是一个事件序列,表示为δ=<e1,e2,…ei,…,en>,其中第i个事件ei,1≤i≤n包含下列属性:ti:表示事件ei所属的线程;mi:表示事件ei所访问的内存位置;li:表示当事件ei执行时,当前线程所拥有的锁集;ai:表示事件ei的事件类型,包括读、写、分支、获取锁、释放锁,等待、通知、创建线程和等待线程结束,进入方法和退出方法。3.根据权利要求1所述的一种基于约束求解的原子集合序列化违背探测方法,其特征在于,步骤2)的具体过程如下:步骤21)确定工作单元:将一个Java类中的每个方法体都看作一个工作单元,对含有嵌套结构的方法,仅考虑最外层方法为一个工作单元;步骤22)确定原子集合:通过静态分析方法对工作单元中的变量进行分析,若两个变量在所有工作单元中同时出现的概率大...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。