[发明专利]一种基于代码静态分析的数据竞争检测方法及系统有效
申请号: | 201010622730.7 | 申请日: | 2010-12-29 |
公开(公告)号: | CN102073589A | 公开(公告)日: | 2011-05-25 |
发明(设计)人: | 黄俊飞;宫云战;杨朝红;金大海;姚欣洪;王雅文;肖庆;白哥乐 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇泽知识产权代理有限公司 11228 | 代理人: | 张瑾 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于代码静态分析的数据竞争检测方法及系统,该方法包括:读取待测软件,对待测软件源程序进行静态分析,生成待测软件的抽象语法树、控制流图、全局函数调用图;在此基础之上计算每个函数内部的别名信息、函数间出口别名信息、锁集合信息、函数内部访问可逃逸变量的访问链以及线程创建关系图;根据访问链计算每两个线程之间访问节点的初始化语句对集合;根据别名信息、锁集合信息、并发关系对该集合进行逐步删减得到最终可能发生数据竞争的语句对。本发明提供的检测方法与检测系统能对C/C++编写的多线程程序进行有效的数据竞争检测,具有测试精度高和自动化程度高的特点,适用于对两个线程或多个线程导致的数据竞争的检测。 | ||
搜索关键词: | 一种 基于 代码 静态 分析 数据 竞争 检测 方法 系统 | ||
【主权项】:
一种基于代码静态分析的数据竞争检测方法,其特征在于,该方法包括以下步骤:A、读取待测软件,对待测软件源程序进行词法分析、语法分析及语义分析,生成待测软件的抽象语法树、控制流图、全局函数调用图;B、遍历每个源文件生成的所述抽象语法树,找出所有线程的入口函数;C、遍历每个函数的所述控制流图,计算每个函数内部的别名信息、函数间出口别名信息、锁集合信息、函数内部访问可逃逸变量的访问链以及线程创建关系图;D、遇到每个线程的入口函数时,计算当前线程的调用链以及修改所述线程创建关系图;E、计算每两个线程之间访问节点的初始化语句对集合;F、遍历初始化语句对集合,根据别名信息删除其中不存在别名关系的语句对,得到拥有别名信息的语句对集合;G、遍历所述拥有别名信息的语句对集合,根据锁集合信息,删除其中拥有别名锁的语句对,从而得到缺乏锁同步的语句对集合;H、遍历所述缺乏锁同步的语句对集合,根据所述线程创建关系图删除不可能并发执行的语句对,从而得到最终可能发生数据竞争的语句对。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010622730.7/,转载请声明来源钻瓜专利网。