-
公开(公告)号:CN102073588A
公开(公告)日:2011-05-25
申请号:CN201010622570.6
申请日:2010-12-28
Applicant: 北京邮电大学
IPC: G06F11/36
Abstract: 本发明提供一种基于代码静态分析的多线程死锁检测方法及系统,该方法包括:对待测软件源程序进行词法、语法及语义分析,生成抽象语法树和控制流图;通过遍历抽象语法树,生成程序的指向分析图,对程序中的线程类进行分析,生成线程类并发特征集合;通过对控制流图的遍历,对程序进行可达分析,生成线程并发特征集并进行分析,生成占有请求特征集和锁图并进行分析,检测潜在的死锁,找到锁对象的门锁集合,删除不同线程锁对象存在相同门锁情况的死锁,更新潜在死锁集合;通过并发与逃逸分析,删除不可能的死锁情况,得到最终的死锁集合。应用本发明的方法及系统能够有效检测两个或多个线程产生死锁的情况,提高测试精度和自动化程度。
-
公开(公告)号:CN102073589A
公开(公告)日:2011-05-25
申请号:CN201010622730.7
申请日:2010-12-29
Applicant: 北京邮电大学
IPC: G06F11/36
Abstract: 本发明公开了一种基于代码静态分析的数据竞争检测方法及系统,该方法包括:读取待测软件,对待测软件源程序进行静态分析,生成待测软件的抽象语法树、控制流图、全局函数调用图;在此基础之上计算每个函数内部的别名信息、函数间出口别名信息、锁集合信息、函数内部访问可逃逸变量的访问链以及线程创建关系图;根据访问链计算每两个线程之间访问节点的初始化语句对集合;根据别名信息、锁集合信息、并发关系对该集合进行逐步删减得到最终可能发生数据竞争的语句对。本发明提供的检测方法与检测系统能对C/C++编写的多线程程序进行有效的数据竞争检测,具有测试精度高和自动化程度高的特点,适用于对两个线程或多个线程导致的数据竞争的检测。
-
公开(公告)号:CN102073588B
公开(公告)日:2013-11-20
申请号:CN201010622570.6
申请日:2010-12-28
Applicant: 北京邮电大学
IPC: G06F11/36
Abstract: 本发明提供一种基于代码静态分析的多线程死锁检测方法及系统,该方法包括:对待测软件源程序进行词法、语法及语义分析,生成抽象语法树和控制流图;通过遍历抽象语法树,生成程序的指向分析图,对程序中的线程类进行分析,生成线程类并发特征集合;通过对控制流图的遍历,对程序进行可达分析,生成线程并发特征集并进行分析,生成占有请求特征集和锁图并进行分析,检测潜在的死锁,找到锁对象的门锁集合,删除不同线程锁对象存在相同门锁情况的死锁,更新潜在死锁集合;通过并发与逃逸分析,删除不可能的死锁情况,得到最终的死锁集合。应用本发明的方法及系统能够有效检测两个或多个线程产生死锁的情况,提高测试精度和自动化程度。
-
公开(公告)号:CN102073589B
公开(公告)日:2013-07-03
申请号:CN201010622730.7
申请日:2010-12-29
Applicant: 北京邮电大学
IPC: G06F11/36
Abstract: 本发明公开了一种基于代码静态分析的数据竞争检测方法及系统,该方法包括:读取待测软件,对待测软件源程序进行静态分析,生成待测软件的抽象语法树、控制流图、全局函数调用图;在此基础之上计算每个函数内部的别名信息、函数间出口别名信息、锁集合信息、函数内部访问可逃逸变量的访问链以及线程创建关系图;根据访问链计算每两个线程之间访问节点的初始化语句对集合;根据别名信息、锁集合信息、并发关系对该集合进行逐步删减得到最终可能发生数据竞争的语句对。本发明提供的检测方法与检测系统能对C/C++编写的多线程程序进行有效的数据竞争检测,具有测试精度高和自动化程度高的特点,适用于对两个线程或多个线程导致的数据竞争的检测。
-
-
-