【技术实现步骤摘要】
基于内存池的内存错误调试方法和装置
本申请涉及数据存储领域,特别是涉及一种基于内存池的内存错误调试方法和装置。
技术介绍
在存储系统中,普遍采用编程语言例如C语言或C++语言来实现内存管理,这种内存管理方法需要的代码量十分庞大、且逻辑实现复杂,导致经常出现引用已释放内存、内存重复释放、内存泄漏、内存缓冲区溢出等内存错误,这些内存错误可能会影响程序的正常运行,因此,需要对这些内存错误进行调试,以修正这些内存错误。目前,内存错误调试的方法主要有代码走查,使用静态分析工具lint等工具分析代码,单元测试、系统测试及分析日志log等。这些方法都是对代码逻辑进行分析,仅能对一些简单的内存错误进行调试,一旦代码逻辑比较复杂,内存错误隐藏在复杂的代码逻辑之中,那么,这些方法将难以发现和定位这些比较复杂的内存错误,从而难以对复杂的内存错误进行调试。
技术实现思路
为了解决上述技术问题,本申请提供了一种基于内存池的内存错误调试方法和装置,该方法通过内存池中记录的内存管理信息可以发现和定位这些比较复杂的内存错误,从而对复杂的内存错误进行调试。本申请实施例公开了如下技术方案:第一方面,本申 ...
【技术保护点】
1.一种基于内存池的内存错误调试方法,其特征在于,内存池管理动态申请的内存,所述内存池包括至少一个内存空闲链表,每个内存空闲链表中包括至少一个链表节点,每个链表节点对应的内存由一个内存管理结构记录内存管理信息,所述方法包括:获取目标内存的内存管理信息,所述内存管理信息中至少包括内存分配、内存引用和内存释放的相关信息;若根据所述内存管理信息确定所述目标内存出现内存错误,则对所述内存错误进行调试;若根据所述内存管理信息确定所述目标内存未出现内存错误,则更新所述内存管理信息,将更新后的内存管理信息记录在所述目标内存对应的内存管理结构中,以便后续利用所述更新后的内存管理信息执行所述 ...
【技术特征摘要】
1.一种基于内存池的内存错误调试方法,其特征在于,内存池管理动态申请的内存,所述内存池包括至少一个内存空闲链表,每个内存空闲链表中包括至少一个链表节点,每个链表节点对应的内存由一个内存管理结构记录内存管理信息,所述方法包括:获取目标内存的内存管理信息,所述内存管理信息中至少包括内存分配、内存引用和内存释放的相关信息;若根据所述内存管理信息确定所述目标内存出现内存错误,则对所述内存错误进行调试;若根据所述内存管理信息确定所述目标内存未出现内存错误,则更新所述内存管理信息,将更新后的内存管理信息记录在所述目标内存对应的内存管理结构中,以便后续利用所述更新后的内存管理信息执行所述获取目标内存的内存管理信息的步骤。2.根据权利要求1所述的方法,其特征在于,在所述获取目标内存的内存管理信息之前,所述方法还包括:获取内存分配请求,所述内存分配请求中包括内存大小信息;根据所述内存分配请求确定内存池中对应的内存空闲链表;取下所述内存空闲链表中的一个节点,将所述节点插入到已分配的内存链表中;初始化所述节点的内存管理信息及内存的校验值。3.根据权利要求1所述的方法,其特征在于,若所述内存管理信息中包括内存引用的相关信息,所述目标内存具有校验值,在引用目标内存时,所述若根据所述内存管理信息确定所述目标内存出现内存错误,则对所述内存错误进行调试,包括:根据所述内存管理信息确定所述目标内存是否已被释放;若是,则触发程序崩溃;若否,则根据所述目标内存的校验值确定是否存在缓冲区溢出;若存在,则触发程序崩溃。4.根据权利要求1所述的方法,其特征在于,若所述内存管理信息中包括内存引用的相关信息和内存释放的相关信息,所述目标内存具有校验值,在释放目标内存时,所述若根据所述内存管理信息确定所述目标内存出现内存错误,则对所述内存错误进行调试,包括:根据所述内存管理信息确定目标内存是否已被释放;若是,则触发程序崩溃;若否,则根据所述目标内存的校验值确定是否存在缓冲区溢出;若存在,则触发程序崩溃。5.根据权利要求4所述的方法,其特征在于,若所述引用的相关信息包括内存引用计数,根据所述目标内存的校验值确定不存在缓冲区溢出,所述更新所述内存管理信息,包括:减少所述内存引用计数。6.根据权利...
【专利技术属性】
技术研发人员:邸忠辉,
申请(专利权)人:郑州云海信息技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。