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