摘要 | 第3-5页 |
Abstract | 第5-7页 |
插图目录 | 第10-11页 |
表格目录 | 第11-12页 |
第一章 绪论 | 第12-23页 |
1.1 背景介绍 | 第12-15页 |
1.1.1 并发程序的发展 | 第12-13页 |
1.1.2 软件测试及其在并发程序中的应用 | 第13-15页 |
1.2 课题的研究意义 | 第15-16页 |
1.2.1 对于基于Java 语言的并发程序的记录及回放 | 第15页 |
1.2.2 自动生成可以重现并发错误的单元测试用例 | 第15-16页 |
1.3 国内外研究现状 | 第16-21页 |
1.3.1 并发程序的错误检测 | 第16-18页 |
1.3.2 并发程序的记录及回放 | 第18-20页 |
1.3.3 对于程序错误的重现及相关技术 | 第20-21页 |
1.4 论文基本思想和成果 | 第21-22页 |
1.5 论文组织结构 | 第22页 |
1.6 本章小结 | 第22-23页 |
第二章 并发程序的错误类型 | 第23-31页 |
2.1 概述 | 第23页 |
2.2 数据竞争 | 第23-26页 |
2.2.1 数据竞争的定义与示例 | 第23-25页 |
2.2.2 对于数据竞争的检测 | 第25-26页 |
2.3 原子性违反 | 第26-28页 |
2.3.1 原子性违反的定义及示例 | 第26-27页 |
2.3.2 对于原子性违反的检测与重现 | 第27-28页 |
2.4 程序死锁 | 第28-30页 |
2.4.1 程序死锁的定义及示例 | 第28-29页 |
2.4.2 对于程序死锁的检测技术 | 第29-30页 |
2.5 本章小结 | 第30-31页 |
第三章 并发程序的执行记录及确定性回放技术. | 第31-35页 |
3.1 概述 | 第31页 |
3.2 基于内容的记录及回放技术 | 第31-32页 |
3.3 基于顺序的记录及回放技术 | 第32-33页 |
3.4 两种方法的比较分析 | 第33-34页 |
3.5 本章小结 | 第34-35页 |
第四章 并发程序错误重现工具CONCRASH 的设计及实现 | 第35-55页 |
4.1 概述 | 第35-36页 |
4.2 CONCRASH 总体架构及流程 | 第36-42页 |
4.2.1 总体架构图. | 第36-39页 |
4.2.2 实例执行流程介绍 | 第39-42页 |
4.3 CONCRASH 预处理模块 | 第42-46页 |
4.3.1 Java 字节码及Soot 介绍 | 第42-45页 |
4.3.2 插装点的识别及字节码插装的实现 | 第45-46页 |
4.4 CONCRASH 记录及回放模块 | 第46-51页 |
4.4.1 Lamport 时钟及逻辑线程执行时序 | 第46-48页 |
4.4.2 记录及确定性回放算法 | 第48-51页 |
4.5 CONCRASH 测试用例生成模块 | 第51-54页 |
4.6 本章小结 | 第54-55页 |
第五章 实验评估 | 第55-61页 |
5.1 实验程序介绍 | 第55-56页 |
5.2 实验方法及过程 | 第56-57页 |
5.3 实验结果及讨论 | 第57-60页 |
5.3.1 重现错误能力结果 | 第57-58页 |
5.3.2 时间及空间开销结果 | 第58-60页 |
5.4 本章小结 | 第60-61页 |
第六章 经验及总结 | 第61-63页 |
6.1 本文主要贡献 | 第61-62页 |
6.2 研究展望 | 第62-63页 |
参考文献 | 第63-67页 |
致谢 | 第67-70页 |
攻读硕士学位期间已发表或录用的论文 | 第70-72页 |