嵌入式软件的C语言代码静态检查技术研究
| 摘要 | 第1-4页 |
| Abstract | 第4-10页 |
| 第1章 绪论 | 第10-14页 |
| ·课题的背景和意义 | 第10-12页 |
| ·嵌入式系统的广泛应用 | 第10-11页 |
| ·嵌入式开发的软件环境 | 第11页 |
| ·嵌入式C代码静态验证的意义 | 第11-12页 |
| ·课题的研究目标 | 第12页 |
| ·拟解决的关键问题 | 第12页 |
| ·论文组织 | 第12-14页 |
| 第2章 C代码静态检查研究综述 | 第14-22页 |
| ·嵌入式 C代码主要的安全隐患 | 第14-16页 |
| ·内存访问错误 | 第14页 |
| ·缓冲区溢出错误 | 第14-15页 |
| ·指针引用错误 | 第15页 |
| ·异常控制 | 第15页 |
| ·堆栈溢出 | 第15-16页 |
| ·静态检测和动态检测的对比 | 第16页 |
| ·静态分析的主要困难 | 第16-17页 |
| ·国内外相关研究 | 第17-18页 |
| ·常用工具分析 | 第18-21页 |
| ·Pc-lint | 第18页 |
| ·Logiscope | 第18-19页 |
| ·QAC/C++ | 第19-20页 |
| ·Polyspace C verifier | 第20页 |
| ·StackAna1yzer | 第20-21页 |
| ·本章小结 | 第21-22页 |
| 第3章 内存访问和指针错误检查 | 第22-33页 |
| ·内存和指针错误种类 | 第22页 |
| ·基于标注的静态检测模型分析 | 第22-26页 |
| ·存储模型分析 | 第23-24页 |
| ·标注分类介绍和语义分析 | 第24-26页 |
| ·使用指针标注检查指针引用错误 | 第26-27页 |
| ·使用内存分配标注检查内存错误 | 第27-29页 |
| ·基于标注的检测过程 | 第29-32页 |
| ·本章小结 | 第32-33页 |
| 第4章 堆栈溢出检查 | 第33-62页 |
| ·堆栈溢出产生原因 | 第33-42页 |
| ·C语言的内存模型 | 第33-35页 |
| ·C语言的函数调用过程 | 第35-40页 |
| ·堆栈溢出的原因 | 第40-41页 |
| ·静态堆栈检测难点 | 第41-42页 |
| ·解决方案与关键技术 | 第42-50页 |
| ·设计目标 | 第42页 |
| ·函数堆栈使用及汇编代码 | 第42-44页 |
| ·函数调用关系图及RTL代码介绍 | 第44-47页 |
| ·调用图分析算法 | 第47-50页 |
| ·系统设计与实现 | 第50-61页 |
| ·调用关系图管理子模块设计 | 第53-55页 |
| ·函数堆栈分析子模块设计 | 第55-57页 |
| ·调用图分析子模块 | 第57-58页 |
| ·参数配置管理子模块 | 第58-60页 |
| ·流程控制模块 | 第60-61页 |
| ·本章小结 | 第61-62页 |
| 第5章 实验与测试 | 第62-69页 |
| ·功能测试 | 第62-66页 |
| ·测试环境 | 第62页 |
| ·测试文件 | 第62-63页 |
| ·测试结果 | 第63-66页 |
| ·性能分析 | 第66-68页 |
| ·结论 | 第68-69页 |
| 第6章 总结与展望 | 第69-71页 |
| ·总结 | 第69页 |
| ·不足与展望 | 第69-71页 |
| 参考文献 | 第71-74页 |
| 致谢 | 第74-75页 |
| 作者简历 | 第75页 |