发明名称 程序设计中内存操作错误的识别方法
摘要 一种识别程序设计中内存操作错误的方法,对源程序的插装是基于包含有指针句柄表和颜色表的插装库进行的,对语句中包含有动态内存、变量和字符串常量的内存块时,插入登记内存块的语句;对指针赋值语句,插入登记指针并建立与内存块间关系的语句;对数组和表达式语句,插入对数组及表达式进行检查的语句。利用该方法可有效地检测出内存操作有关的编程错误,提高测试效率和程序质量,降低测试方面的费用开销。
申请公布号 CN1129070C 申请公布日期 2003.11.26
申请号 CN98104528.6 申请日期 1998.02.06
申请人 华为技术有限公司 发明人 陈青;刘运渠;肖华熙;龙晶
分类号 G06F11/00 主分类号 G06F11/00
代理机构 代理人
主权项 1.一种识别程序设计中的内存操作错误的方法,包括以下步骤:对源程序进行插装,编译并运行插装后的程序,从运行产生的错误日志取得出错信息,其特征在于,包括:A、在插装库中定义指针句柄表和颜色表,所述指针句柄表为每个指针项记录其指针标示和内存块句柄,所述颜色表为每一个内存块项记录内存块标示、属性和指向它的指针句柄;B、对源程序进行插装,包括:打开源程序,判定文件是否结束,如是结束插装流程,否则从源程序中读语句到缓冲区,对语句进行判断,并依判断结果插入不同的语句:当语句中包含有动态内存、变量和字符串常量的内存块时,插入登记内存块的语句;当语句中出现指针赋值语句时,插入登记指针并建立与内存块间关系的语句;当语句中出现有数组和表达式语句时,插入对数组及表达式进行检查的语句;C、运行插装后的被测程序,依插装库中定义的指针句柄表和颜色表检测出内存操作错误或指针操作错误,包括:当插装库收到对数组表达式的检查请求,进行数组地址及数组表达式地址赋值,以数组地址为关键字在颜色表中查找内存块项,如没有找到则记录错误信息;否则,依内存块属性判断数组表达式地址是否越界,如越界则记录错误信息,否则结束对该数组的检查;当插装库收到对指针表达式的检查请求,对指针地址及指针表达式地址赋值,以指针地址为关键字在指针句柄表中查找对应指针项,如没有找到则记录错误信息;否则,以找到的对应指针项作为内存块句柄,查找颜色表中对应的内存块项,如未找到内存块项,则记录错误信息,否则,依内存块属性判断指针表达式是否越界,如越界则记录错误信息,如未越界结束对该数组的检查。
地址 518057广东省深圳市科技园科发路华为大厦知识产权部侯琳琳转