[发明专利]一种基于硬件和线程本地时序的数据竞争采样检测方法有效
申请号: | 201610565161.4 | 申请日: | 2016-07-18 |
公开(公告)号: | CN106227656B | 公开(公告)日: | 2018-07-17 |
发明(设计)人: | 蔡彦;张健 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 成金玉;卢纪 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于硬件和线程本地时序的数据竞争采样检测方法,属于软件测试领域和软件可靠性领域,步骤包括:按给定采样率随机选择内存访问指令,对这些指令插桩;并识别同步语句,对每个线程设置一个本地时序,该时序随着同步语句的执行而增加;程序运行时,若某个插桩被运行,则在对应指令要访问的内存地址上设置一个内存(读写或写)断点并记录当前线程的本地时序;若一个内存断点被另一个线程触发,且设置断点的线程的本地时序未改变,则检测到一个数据竞争。本发明的方法基于硬件断点和线程本地时序,和单纯使用硬件断点或线程时序的方法相比,在比较小的内存访问采样率下,时间开销更小,数据竞争检测的有效性更高。 | ||
搜索关键词: | 时序 线程 数据竞争 断点 采样检测 硬件断点 采样率 插桩 语句 内存 指令 内存访问指令 数据竞争检测 软件可靠性 程序运行 内存地址 内存访问 软件测试 时间开销 随机选择 触发 读写 检测 记录 访问 | ||
【主权项】:
1.一种基于硬件断点和程序线程本地时序的数据竞争采样检测方法,其特征在于包括以下步骤:(1)给定程序P和一个采样率r,按照r对P中的所有指令采样,采样集合记为S,并对S中的每条指令设置指令断点;(2)识别程序P中的同步操作,并对每个同步操作插桩一个函数调用;(3)运行程序,并根据如下不同情况采用不同操作:A.如果一个指令断点触发,则获取该对应指令的如下属性:内存访问地址信息addr,是否是写操作isWrite,以及所访问内存的大小size;之后在内存addr处设置大小为size的内存断点:若写操作isWrite为true,则设置读写内存断点,即setDataBreakpointRW(addr,size);否则仅设置写内存断点,即setDataBreakpointW(addr,size);同时记录当前线程t1的本地时序值t1.preClock,并启动一个计时器;B.若某个内存断点被线程t2触发,则立即获取之前线程t1当前的本地时序t1.curClock,若t1≠t2且t1.preClock=t1.curClock,则在内存addr上检测到一个数据竞争;同时取消该断点;C.若在定时器触发时,addr上的内存断点没有被触发,则取消该断点;D.若某个同步操作被执行,则在被插入的函数中把当前线程的本地时序加1;E.若程序执行退出指令,则清空所有的内存断点,退出程序。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610565161.4/,转载请声明来源钻瓜专利网。