摘要 | 第8-9页 |
ABSTRACT | 第9页 |
第一章 绪论 | 第10-18页 |
§1.1 指针分析的意义 | 第10-11页 |
1.1.1 构建静态程序分析工具与调试工具 | 第10页 |
1.1.2 数据流分析与程序优化 | 第10-11页 |
1.1.3 开发程序的并行性 | 第11页 |
§1.2 缓冲区溢出静态分析对指针分析的需求 | 第11-12页 |
§1.3 指针分析研究的关键问题 | 第12-16页 |
1.3.1 指针指向信息的表示 | 第12-13页 |
1.3.2 堆和聚集建模 | 第13-14页 |
1.3.3 是否采用流敏感的分析方法 | 第14页 |
1.3.4 是否采用上下文敏感的过程间分析方法 | 第14-16页 |
§1.4 课题主要工作 | 第16-17页 |
§1.5 论文结构 | 第17-18页 |
第二章 指针分析的相关工作 | 第18-27页 |
§2.1 指针分析的术语 | 第18-19页 |
§2.2 相关理论知识 | 第19-23页 |
2.2.1 控制流图 | 第19-20页 |
2.2.2 数据流分析 | 第20页 |
2.2.3 过程间分析 | 第20-22页 |
2.2.4 约束分析 | 第22-23页 |
§2.3 已有指针分析算法比较 | 第23-26页 |
2.3.1 流和上下文不敏感分析 | 第23-24页 |
2.3.2 流敏感、上下文不敏感的指针分析 | 第24-25页 |
2.3.3 流和上下文敏感分析算法 | 第25-26页 |
§2.4 小结 | 第26-27页 |
第三章 CGBCI指针分析算法研究与实现 | 第27-36页 |
§3.1 算法思想概述 | 第27页 |
§3.2 约束和约束图 | 第27-29页 |
§3.3 CGBCI指针分析算法实现 | 第29-35页 |
3.3.1 约束图初始化 | 第30-31页 |
3.3.2 约束图的构造 | 第31-32页 |
3.3.3 约束图动态求解 | 第32-34页 |
3.3.4 函数指针处理 | 第34-35页 |
§3.4 小结 | 第35-36页 |
第四章 上下文敏感的指针分析算法的研究与实现 | 第36-56页 |
§4.1 CGBCI指针分析算法的不足 | 第36-37页 |
§4.2 获取上下文敏感分析的方法 | 第37-40页 |
4.2.1 完全过程嵌入 | 第37-38页 |
4.2.2 过程间指向副作用语句嵌入 | 第38-40页 |
§4.3 基于指向副作用嵌入调度的上下文敏感指针分析算法 | 第40-45页 |
4.3.1 算法概述 | 第41-42页 |
4.3.2 算法的正确性证明 | 第42-44页 |
4.3.3 调用图的构造 | 第44-45页 |
4.3.4 自底向上阶段和自顶向下阶段 | 第45页 |
§4.4 过程间指向副作用提取算法 | 第45-53页 |
4.4.1 副作用的特殊化 | 第45-47页 |
4.4.2 处理别名 | 第47-49页 |
4.4.3 构造指向概要 | 第49-53页 |
4.4.4 指向概要的调度和关键赋值的删除 | 第53页 |
4.4.5 全局赋值的处理 | 第53页 |
§4.5 实验结果 | 第53-55页 |
§4.6 小结 | 第55-56页 |
第五章 指针分析在缓冲区溢出静态分析中的应用 | 第56-65页 |
§5.1 概述 | 第56页 |
§5.2 指针分析在缓冲区溢出分析工具中作用 | 第56-59页 |
5.2.1 变量的抽象属性的初始化 | 第57-58页 |
5.2.2 变量操作的语义解释 | 第58-59页 |
§5.3 约束的产生和分析 | 第59-63页 |
5.3.1 程序的遍历 | 第59-60页 |
5.3.2 过程内的约束产生和分析 | 第60-61页 |
5.3.3 过程间的约束分析 | 第61-63页 |
§5.4 实验结果 | 第63-64页 |
§5.5 小结 | 第64-65页 |
第六章 结束语 | 第65-67页 |
§6.1 本文的工作总结 | 第65页 |
§6.2 展望 | 第65-67页 |
致谢 | 第67-68页 |
附录: 攻读硕士期间发表的论文 | 第68-69页 |
参考文献 | 第69-70页 |