[发明专利]一种基于序列模式挖掘的并发程序剖析方法有效
申请号: | 201711344458.9 | 申请日: | 2017-12-14 |
公开(公告)号: | CN108182144B | 公开(公告)日: | 2020-12-11 |
发明(设计)人: | 王璐璐;李必信;周颖;廖力;孔祥龙 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 柏尚春 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 序列 模式 挖掘 并发 程序 剖析 方法 | ||
本发明公开了一种基于序列模式挖掘的并发程序剖析方法,通过对并发程序的源代码进行分析,获取其中的线程信息以及线程之前的依赖关系,以插桩的方式来捕获程序运行过程中所执行的依赖关系序列,最后通过基于序列模式挖掘的方法获知所执行的并发程序中父子线程交互的剖析结果。
技术领域
本发明属于动态程序分析的技术领域,涉及一种基于序列模式挖掘的并发程序剖析方法。
背景技术
程序剖析技术是针对软件执行中发生的控制流信息和数据流信息,统计每种信息的执行频率,以辅助分析程序行为,决定优化方向,已经广泛应用于编译优化、程序理解等领域。
目前主要的剖析方法有:
1996年T.Ball和J.Larus提出的Efficient Path Profiling方法。该方法首次提出通过在目标软件中插桩探针语句的方式来实现路径的唯一编码,能够以低廉的耗费处理一个软件中所有的非循环路径,但是不能处理循环路径,其中的路径编码和插桩方式为后续的路径剖析研究奠定了基础;
2007年K.Vaswani等人提出的Preferential Path Profiling方法。该方法能够针对用户所指定的目标软件中一部分非循环路径(称为“兴趣路径集合”)进行剖析,不区分或处理兴趣路径集合之外的任何路径,该方法耗费较Efficient Path Profiling更低,依然不能处理循环路径;
2012年B.Li和L.Wang等人提出的Profiling ofAll Paths方法。这一方法能够处理带有循环的软件路径,获得精确的剖析结果,耗费高于前两种方法。
现有的剖析技术均不适用于并发程序。并发程序的执行过程包含多个线程的创建、睡眠、唤醒和终止等交互序列,比普通单线程程序的执行过程更加复杂,多个线程的纠缠执行为理解并发程序执行过程带来了困难。针对线程交互序列进行剖析,可以获知并发程序执行过程中主流的线程执行操作,有助于揭示并发程序线程操作的逻辑链条,帮助软件相关人员理解并发程序的行为。
序列模式挖掘技术可以用于从程序执行轨迹中抽取线程交互序列信息,形成剖析结果。目前主要的序列模式挖掘算法,如Apriori、GSP(generalized sequentialpattern)、FreeSpan等,均属于通用的挖掘算法。针对并发程序剖析这一具体应用场景,需要在应用挖掘算法时进行相应的调整,以达成剖析的目标。
发明内容
技术问题:本发明提供一种能够分析并发程序交互关系,记录执行轨迹,并通过挖掘轨迹中的序列模式获取信息,完成剖析的基于序列模式挖掘的并发程序剖析方法。
技术方案:本发明的一种基于序列模式挖掘的并发程序剖析方法,包括如下步骤:
步骤1)通过并发程序源码的静态分析方法,获得并发程序中存在的所有线程信息集合Sthread={Tx},所有线程位置集合Slocation={Ly},以及线程之间各种类型的依赖关系集合Sdependence={Type,La,Lb},所述所有线程信息集合Sthread={Tx}包括Ta,Tb两个线程,La是Ta的一个代码位置,Lb是Tb的一个代码位置,Type是从La指向Lb的依赖关系类型;
步骤2)按照所述步骤1中所得信息进行代码插桩,并通过执行插桩后的并发程序来获取依赖轨迹,具体方法为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711344458.9/2.html,转载请声明来源钻瓜专利网。