摘要 | 第3-5页 |
ABSTRACT | 第5-6页 |
第一章 绪论 | 第17-33页 |
1.1 研究背景和意义 | 第17-19页 |
1.2 并发程序错误检测的主流技术 | 第19-23页 |
1.2.1 基于程序静态分析的检测技术 | 第19-20页 |
1.2.2 基于程序动态分析的检测技术 | 第20-21页 |
1.2.3 模型检测技术 | 第21-22页 |
1.2.4 基于预测分析的检测技术 | 第22-23页 |
1.3 并发程序错误检测的技术指标 | 第23-26页 |
1.3.1 可扩展性 | 第23-24页 |
1.3.2 效率 | 第24-25页 |
1.3.3 有效性 | 第25-26页 |
1.3.4 可理解性 | 第26页 |
1.4 主要工作和贡献 | 第26-30页 |
1.4.1 主要工作 | 第27-28页 |
1.4.2 贡献 | 第28-30页 |
1.5 论文结构 | 第30-33页 |
第二章 基础知识 | 第33-43页 |
2.1 并发程序执行的基本概念 | 第33-37页 |
2.1.1 并发程序执行模型 | 第33-34页 |
2.1.2 执行轨迹 | 第34-35页 |
2.1.3 Happens-before关系 | 第35页 |
2.1.4 锁集 | 第35-36页 |
2.1.5 依赖关系 | 第36页 |
2.1.6 完全等价关系 | 第36-37页 |
2.2 轨迹相关理论 | 第37页 |
2.2.1 轨迹冗余理论 | 第37页 |
2.2.2 轨迹等价理论 | 第37页 |
2.3 常见的并发程序错误 | 第37-41页 |
2.3.1 数据竞争 | 第38页 |
2.3.2 原子性违反 | 第38-40页 |
2.3.3 顺序违反 | 第40-41页 |
2.4 基于预测分析的并发程序错误检测技术基本框架 | 第41-42页 |
2.5 本章小结 | 第42-43页 |
第三章 两阶段轨迹过滤技术 | 第43-65页 |
3.1 引言 | 第43-47页 |
3.1.1 研究背景 | 第43页 |
3.1.2 问题提出 | 第43-45页 |
3.1.3 主要工作 | 第45-46页 |
3.1.4 本章结构 | 第46-47页 |
3.2 轨迹过滤问题建模 | 第47-52页 |
3.2.1 两种等价标准 | 第47-48页 |
3.2.2 冗余计算模型 | 第48-50页 |
3.2.3 残余事件 | 第50-52页 |
3.3 两阶段轨迹过滤技术 | 第52-58页 |
3.3.1 过滤轨迹中的冗余事件 | 第52-56页 |
3.3.2 过滤轨迹中的残余信息 | 第56-58页 |
3.4 实验评估 | 第58-61页 |
3.4.1 过滤效率 | 第58-59页 |
3.4.2 过滤能力 | 第59-61页 |
3.4.3 有效性 | 第61页 |
3.5 本章小结 | 第61-65页 |
第四章 双向预测顺序违反技术 | 第65-89页 |
4.1 引言 | 第65-68页 |
4.1.1 研究背景 | 第65-66页 |
4.1.2 问题提出 | 第66-67页 |
4.1.3 主要工作 | 第67-68页 |
4.1.4 本章结构 | 第68页 |
4.2 双向预测分析顺序违反实例 | 第68-72页 |
4.3 双向预测顺序违反问题建模 | 第72-75页 |
4.3.1 基于期望的双向预测模型 | 第72-74页 |
4.3.2 潜在过期/过早使用序列 | 第74-75页 |
4.4 双向预测顺序违反的方法 | 第75-84页 |
4.4.1 构建基于期望的双向预测模型 | 第76-78页 |
4.4.2 识别潜在违反序列范围 | 第78-79页 |
4.4.3 双向预测潜在违反序列 | 第79-84页 |
4.4.4 生成具体的调度 | 第84页 |
4.4.5 裁剪不可行的调度 | 第84页 |
4.5 实现和实验评估 | 第84-88页 |
4.5.1 实现 | 第85页 |
4.5.2 实验评估 | 第85-87页 |
4.5.3 局限性 | 第87-88页 |
4.6 本章小结 | 第88-89页 |
第五章 基于预测的主动随机测试空指针解引用技术 | 第89-109页 |
5.1 引言 | 第89-92页 |
5.1.1 研究背景 | 第89-90页 |
5.1.2 问题提出 | 第90-91页 |
5.1.3 主要工作 | 第91-92页 |
5.1.4 本章结构 | 第92页 |
5.2 空指针解引用预测分析实例 | 第92-94页 |
5.3 预测空指针解引用问题建模 | 第94-98页 |
5.3.1 约束指导的预测模型 | 第94-95页 |
5.3.2 潜在NPD链和场景 | 第95-98页 |
5.4 基于预测的主动测试空指针解引用 | 第98-105页 |
5.4.1 标识空赋值语句 | 第98页 |
5.4.2 构建预测模型 | 第98-101页 |
5.4.3 约束指导的重排待测NPD链 | 第101-102页 |
5.4.4 构造可行的NPD场景 | 第102-103页 |
5.4.5 主动随机测试空指针解引用异常 | 第103-105页 |
5.5 实现和实验评估 | 第105-108页 |
5.5.1 实现 | 第106页 |
5.5.2 实验评估 | 第106-108页 |
5.6 本章小结 | 第108-109页 |
第六章 渐进地轨迹简化技术 | 第109-125页 |
6.1 引言 | 第109-111页 |
6.1.1 研究背景 | 第109页 |
6.1.2 问题提出 | 第109-110页 |
6.1.3 主要工作 | 第110页 |
6.1.4 本章结构 | 第110-111页 |
6.2 轨迹简化实例 | 第111-114页 |
6.3 轨迹简化问题建模 | 第114-116页 |
6.3.1 依赖限制的轨迹简化模型 | 第114-115页 |
6.3.2 潜在合并区间链 | 第115-116页 |
6.4 渐进轨迹简化技术 | 第116-121页 |
6.4.1 构建轨迹简化模型 | 第116-118页 |
6.4.2 渐进地轨迹简化 | 第118-121页 |
6.5 实验评估 | 第121-124页 |
6.5.1 简化能力 | 第121-123页 |
6.5.2 简化效率 | 第123-124页 |
6.6 本章小结 | 第124-125页 |
第七章 全文总结 | 第125-127页 |
参考文献 | 第127-143页 |
致谢 | 第143-145页 |
攻读学位期间发表的学术论文目录 | 第145-146页 |
攻读学位期间参与的项目 | 第146-148页 |