发明名称 |
嵌入式系统动态存储错误静态检测的实现方法 |
摘要 |
本发明涉及嵌入式系统动态存储度技术领域,旨在提供一种嵌入式系统动态存储错误静态检测的实现方法。该方法包括使用指针树对控制流信息进行记录和使用指针树对过程内动态存储错误进行检测。本发明具有精确性和可靠性。通过定义指针树,能够精确的判断出在程序编译过程中,是否出现了内存的泄漏等问题,如果出现了,能够通过语法树进行精确的定位。通过指针树对程序编译过程进行分析,覆盖了程序编译的整个过程,能够可靠全面的进行动态存储的检测。 |
申请公布号 |
CN1905076A |
申请公布日期 |
2007.01.31 |
申请号 |
CN200610052227.6 |
申请日期 |
2006.06.30 |
申请人 |
浙江大学 |
发明人 |
陈天洲;谢斌;赵懿;王祥生 |
分类号 |
G11C29/12(2006.01);G06F11/36(2006.01) |
主分类号 |
G11C29/12(2006.01) |
代理机构 |
杭州中成专利事务所有限公司 |
代理人 |
唐银益 |
主权项 |
1、一种嵌入式系统动态存储错误静态检测的实现方法,其特征在于,包括以下步骤:(1)使用指针树对控制流信息进行记录;所述的指针树是一棵记录程序动态使用存储空间状况的多叉树,由两种节点构成:入口结点和存储节点;入口节点是指针树的根结点,是访问存储节点的入口;存储节点是指针树的叶子结点,每一个存储节点与程序动态分配的一块存储空间对应;(2)使用指针树对过程内动态存储错误进行检测:①当某个过程语法分析开始时,构造此过程对应指针树的入口节点E和临时存储节点T;②在语法分析过程中,使用临时存储节点记录节点T当前控制流位置;③当语法分析识别出一个存储分配语句,为分配语句中的地址指针PI新建相应的存储节点S,将节点T的控制流位置拷贝给节点S,并记录地址指针PI是否指向数组空间,并判断是否存在内存泄漏,如果有对此给出警告;④当分析过程识别出存储释放语句,将其分解,根据分解结果在指针树上查找对应节点N,如果和地址指针PI中有且仅有一个与数组空间对应,对此给出警告;比较节点N和节点T记录的控制流位置,如果找不到节点N或者由于判断值返回为真而无法删除该节点,说明该释放操作失败,对此给出警告;⑤该过程语法分析结束后,对其指针树进行分析;每个不连通的存储节点代表失去索引的存储空间,其他存储节点代表在过程内未被释放的动态存储空间,对这些存储节点给出警告。 |
地址 |
310027浙江省杭州市西湖区浙大路38号 |