[发明专利]一种并发程序的缺陷模式发现方法有效
申请号: | 201510264963.7 | 申请日: | 2015-05-22 |
公开(公告)号: | CN104899137B | 公开(公告)日: | 2017-09-01 |
发明(设计)人: | 叶俊民;李超;曹洋洋;叶竹君;李蓉;杨艳 | 申请(专利权)人: | 华中师范大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 武汉天力专利事务所42208 | 代理人: | 吴晓颖 |
地址: | 430079 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 并发 程序 缺陷 模式 发现 方法 | ||
技术领域
本发明属于软件故障诊断领域,是一种自主发现并发程序缺陷模式的方法,尤其是一种针对系统执行轨迹使用序列模式挖掘的缺陷模式发现方法。
背景技术
发现并发程序缺陷是一件困难的事情,一般都只能根据日志信息判断故障原因,而普通的监控系统只对软件行为进行检测而无法进一步判断软件的执行是否处于正确的轨迹(正确的行为)之上。
基于面向方面编程的监控程序可将监测逻辑和业务逻辑相互分离,能方便获取到一个并行程序系统的执行轨迹。针对这些获取到的并发程序系统的执行轨迹,可利用序列模式挖掘技术对这些轨迹进行挖掘,这样能有效解决并发程序故障诊断困难的问题,并能从并发程序执行轨迹这一海量数据中提取有用信息,以获取到隐含在历史并发程序轨迹序列集上的故障特征关键点。这种技术将可有效地保障并发软件系统的安全性。
现有技术的典型实现方案如下:
第一,基于专家系统的故障/缺陷诊断程序。其主要原理是将领域专家的知识与经验被表示成产生式规则,并在知识库和数据库的支持下,综合运用各种规则进行一系列的推理。该诊断程序在运行中要求用户输入必要的信息后,就可快速地直接找到最终故障/缺陷或是最有可能的故障/缺陷,并由用户对结果进行进一步判断。但这种方法需要建立规则库,并利用规则库对程序轨迹状态进行判断和预测,这种方法的主要缺点是自动化程度不高,方法的复用性较差。
第二,方便和有效的获取程序执行轨迹是进行软件故障/缺陷诊断的前提。在程序执行轨迹获取方面,美国加利福尼亚大学伯克利分校和贝儿实验室共同提出了动态偏序化简算法(Dynamic Partial Order Reduction,DPOR),探索线程的交互执行情况,并提出了Persistent集合的概念,以保证线程执行情况搜索的完备性。该算法从程序的初始状态执行的迁移序列开始采用深度优先搜索程序状态栈,动态探索线程间交互信息,然后利用这些信息去鉴定回溯点,从而探索状态空间的可选路径,获取程序执行轨迹。
在程序状态的搜索过程中计算各个状态的Persistent集合,使得程序里所有迁移序列都不是空序列,在某一状态下可行的迁移集合里所有迁移和其他迁移序列中的迁移都是独立的,保证搜索的完备性。
但该算法的主要缺点是没有将完整地程序轨迹序列获取并存储;没有为程序轨迹序列的进一步分析提供基础;没有针对含有循环的并发程序进行优化,会出现对已经搜索过的迁移反复搜索的情况,这会造成了DPOR算法效率的低下,这反映在采用该算法的总探索时间和单次平均探索时间都较长。
第三,在对缺陷模式的发现方法上,美国康奈尔大学提出序列模式挖掘算法(Sequential PAttern Mining,SPAM)进行序列模式挖掘,对序列集进行挖掘得到频繁模式。SPAM算法首先将序列信息存储于数据库位图中,然后可在项集层面实行项集拓展,和可在序列层面实行序列拓展,并使用格理论对数据库进行深度优先遍历从而找出序列模式。SPAM算法的主要缺点是需要用户自己来设定最小支持度阈值,不当的支持度阈值可能带来挖掘出的模式质量差的问题;只能对单一类型的序列集进行处理,误报情况严重。
发明内容
本发明的目的在于针对以上不足,在传统基于动态偏序化简算法获取并发程序执行轨迹和SPAM算法进行序列模式挖掘的基础上,针对算法的核心步骤,即获取并发程序轨迹和对轨迹进行挖掘以发现缺陷模式,提出涉及这两步的改进的做法,能自主发现程序缺陷模式。
本发明的技术方案是基于已插装的并发程序,在其运行过程中动态调度线程的执行,实时收集程序执行信息,根据需要存储程序轨迹序列,对执行序列进行挖掘得到缺陷模式。
本发明提供一种并发程序的缺陷模式发现方法,包括以下步骤:
(1)监控目标程序,使用面向方面编程探针代码的注入方法对监控点进行监控以便获取状态信息;
(2)使用动态标记迁移算法DLT对设置监控点的目标程序的执行进行调度,获取目标程序的监控点的状态信息;
(3)把监控到的状态信息,以轨迹序列的形式存储在数据库中,获取数据库中每条轨迹序列的执行结果,对轨迹序列进行分类,得到成功执行序列集和失效执行序列集;
(4)在成功执行序列集和失效执行序列集中,利用序列模式挖掘算法ISPAM进行挖掘,得到目标程序缺陷模式。
在上述技术方案中,步骤(1)中所述的获取状态信息的步骤如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中师范大学,未经华中师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510264963.7/2.html,转载请声明来源钻瓜专利网。