C分析工具中程序切片和变换的设计与实现
摘要 | 第5-6页 |
ABSTRACT | 第6页 |
第一章 绪论 | 第14-18页 |
1.1 背景介绍 | 第14-15页 |
1.2 本文工作 | 第15-16页 |
1.3 章节安排 | 第16-18页 |
第二章 工具框架 | 第18-24页 |
2.1 LLVM的简介 | 第18-20页 |
2.2 符号执行 | 第20页 |
2.3 分析工具的框架 | 第20-22页 |
2.4 本章小结 | 第22-24页 |
第三章 程序切片 | 第24-34页 |
3.1 基本概念 | 第24-25页 |
3.2 生成切片准则 | 第25-30页 |
3.2.1 内存泄漏 | 第26-27页 |
3.2.2 文件描述符未释放 | 第27页 |
3.2.3 除零 | 第27页 |
3.2.4 整数溢出 | 第27-28页 |
3.2.5 返回栈变量的地址 | 第28页 |
3.2.6 缓冲区溢出 | 第28-29页 |
3.2.7 使用未初始化的变量 | 第29页 |
3.2.8 悬空指针或空指针解引用 | 第29-30页 |
3.3 切片模块 | 第30-33页 |
3.3.1 构建程序依赖图 | 第30-32页 |
3.3.2 计算反向可达性 | 第32-33页 |
3.4 本章小结 | 第33-34页 |
第四章 程序变换 | 第34-48页 |
4.1 基本介绍 | 第34-35页 |
4.2 变换条件 | 第35-42页 |
4.2.1 条件1 | 第35-38页 |
4.2.2 条件2 | 第38-40页 |
4.2.3 条件3 | 第40页 |
4.2.4 数据流分析的问题 | 第40-42页 |
4.3 算法描述 | 第42-46页 |
4.4 本章小结 | 第46-48页 |
第五章 实验结果 | 第48-52页 |
5.1 ShapeChecker的缺陷检测 | 第48-49页 |
5.2 程序切片 | 第49-50页 |
5.3 程序变换 | 第50-51页 |
5.4 本章小节 | 第51-52页 |
第六章 总结 | 第52-54页 |
6.1 本文总结与相关工作 | 第52-53页 |
6.2 工作展望 | 第53-54页 |
参考文献 | 第54-56页 |
致谢 | 第56-58页 |
在读期间发表的学术论文与取得的研究成果 | 第58页 |