摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第一章 绪论 | 第11-15页 |
1.1 研究背景 | 第11-12页 |
1.2 研究内容 | 第12-13页 |
1.3 论文结构和主要内容 | 第13-15页 |
第二章 过程间静态分析 | 第15-32页 |
2.1 数据流分析 | 第15-17页 |
2.1.1 基本定义 | 第15-16页 |
2.1.2 迭代分析 | 第16-17页 |
2.2 符号执行 | 第17-22页 |
2.2.1 符号执行原理 | 第18-19页 |
2.2.2 路径爆炸 | 第19页 |
2.2.3 内存模型 | 第19-21页 |
2.2.4 扩展图 | 第21-22页 |
2.3 过程间分析研究现状 | 第22-28页 |
2.3.1 基于函数内联的过程间分析 | 第23-24页 |
2.3.2 基于函数摘要的过程间分析 | 第24-25页 |
2.3.3 基于符号化函数摘要的过程间静态分析 | 第25-28页 |
2.4 跨文件分析 | 第28-30页 |
2.5 C++过程间分析面临的问题 | 第30-31页 |
2.6 小结 | 第31-32页 |
第三章 基于状态的路径敏感的符号化函数摘要 | 第32-47页 |
3.1 函数摘要的定义 | 第32-36页 |
3.1.1 符号化表达式 | 第34页 |
3.1.2 函数副作用表示 | 第34-35页 |
3.1.3 路径条件 | 第35-36页 |
3.2 基于状态的路径敏感的符号化函数摘要实现算法 | 第36-43页 |
3.2.1 整体框架 | 第36-38页 |
3.2.2 函数摘要的创建 | 第38-40页 |
3.2.3 函数摘要的实例化 | 第40-43页 |
3.3 内存模型 | 第43-45页 |
3.4 总结 | 第45-46页 |
3.5 附录:符号化表达式 | 第46-47页 |
第四章 基于AST序列化存储的跨文件分析算法 | 第47-55页 |
4.1 跨文件分析 | 第47-49页 |
4.2 基于AST序列化存储的跨文件分析实现 | 第49-54页 |
4.2.1 构建阶段 | 第51-52页 |
4.2.2 预分析及分析阶段 | 第52-54页 |
4.3 总结 | 第54-55页 |
第五章 基于状态的路径敏感的符号化函数摘要实现 | 第55-64页 |
5.1 Clang静态分析框架 | 第55-58页 |
5.1.1 Clang过程间分析 | 第55-57页 |
5.1.2 Clang符号值 | 第57-58页 |
5.1.3 Clang约束求解器 | 第58页 |
5.2 函数摘要创建 | 第58-59页 |
5.3 函数摘要实例化 | 第59-61页 |
5.4 AST序列化与逆序列化 | 第61-62页 |
5.5 Checker实现 | 第62-63页 |
5.6 总结 | 第63-64页 |
第六章 实验分析 | 第64-75页 |
6.1 Clang基于函数摘要与基于函数内联实验对比 | 第64-67页 |
6.1.1 实验结果 | 第65-66页 |
6.1.2 结果分析 | 第66-67页 |
6.2 Clang基于函数摘要的跨文件分析实验对比 | 第67-70页 |
6.2.1 实验结果 | 第67-68页 |
6.2.2 结果分析 | 第68-70页 |
6.3 路径敏感的符号化函数摘要与路径不敏感的符号化函数摘要对比 | 第70-73页 |
6.3.1 基于状态的符号化函数摘要路径敏感与路径不敏感的实验对比 | 第70-72页 |
6.3.2 基于状态的路径敏感的函数摘要算法与DTSGCC_RSTVL实验对比 | 第72-73页 |
6.4 总结 | 第73-75页 |
第七章 总结与展望 | 第75-78页 |
7.1 全文总结 | 第75-76页 |
7.2 进一步的研究工作 | 第76-78页 |
致谢 | 第78-79页 |
参考文献 | 第79-83页 |