CN103455424B - 基于VxWorks操作系统的动态内存泄漏检测方法及装置 - Google Patents

基于VxWorks操作系统的动态内存泄漏检测方法及装置 Download PDF

Info

Publication number
CN103455424B
CN103455424B CN201310428609.4A CN201310428609A CN103455424B CN 103455424 B CN103455424 B CN 103455424B CN 201310428609 A CN201310428609 A CN 201310428609A CN 103455424 B CN103455424 B CN 103455424B
Authority
CN
China
Prior art keywords
memory
function
log event
malloc
event item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310428609.4A
Other languages
English (en)
Other versions
CN103455424A (zh
Inventor
陈兴林
刘川
杨天博
刘杨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201310428609.4A priority Critical patent/CN103455424B/zh
Publication of CN103455424A publication Critical patent/CN103455424A/zh
Application granted granted Critical
Publication of CN103455424B publication Critical patent/CN103455424B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

基于VxWorks操作系统的动态内存泄漏检测方法及装置,涉及一种动态内存泄漏检测方法及装置。为了解决目前动态内存泄漏检测的检错效率低且速度慢的问题。它通过改写内存分配函数malloc()和内存释放函数free()得到函数LC_malloc()和函数LC_free(),以日志的形式记录分配和释放信息,实现动态内存的跟踪;通过TCP通信协议,使用数据发送缓冲队列,将日志信息从安装有VxWorks操作系统的工控机上传到上位机;在上位机中,从日志文件中读入日志事件项,并对比内存的分配和释放,从日志文件中分析并检测出内存泄露。它适用于动态内存泄漏检测。

Description

基于VxWorks操作系统的动态内存泄漏检测方法及装置
技术领域
本发明涉及一种动态内存泄漏检测方法及装置,特别涉及一种基于VxWorks操作系统的动态内存泄漏检测方法及装置。
背景技术
VxWorks是美国WindRiver公司开发的一种实时操作系统,其以良好的可靠性和卓越的实时性被广泛应用于很多实时性要求极高的领域。一般使用VxWorks操作系统的产品都是内存一定,而又要长期稳定运行的产品,因此长时候少量的内存泄漏对系统来说也是不合适的。在程序的运行中,导致程序中存在多种与动态内存管理相关的错误,有内存泄漏、内存的重复释放、空指针引用等。这些错误占到软件系统内存故障的50%,这些错误导致系统失效甚至崩溃,这在实时操作系统中是不允许的。
目前,关于动态内存错误的检测方法和工具主要分为两类:动态方法和静态方法。
静态方法通过对程序结构的分析来检测程序中隐藏的动态内存错误,如Lint,Splint等是通过在源程序中添加注释语句来检测应用程序中潜在的错误,而检错效果与应用程序中的注释量有关,并且这些工具中存在的严重问题是经常会给出错误的报告,这些不正确的报警信息会对排错工作产生负面的影响,从而影响错误检测工作的顺利进行。
动态方法需要在程序中进行潜在错误的检测,如purify,它是一个动态的单元测试工具,可以检测到程序中存在的内存泄漏问题,而对于其他的动态内存错误,如空指针的引用,动态内存的重复释放等问题却无能为力。同时,purify需要在程序的运行中进行内存泄漏的检测,由于程序中分支结构的存在,程序的一次运行不能覆盖所有的程序分支,有些错误不能通过程序的运行暴露出来,从而在一定程度上降低了检错效率。Purify和其他动态检测工具一样有一个很重大的限制:会显著增加运行时的负荷。有时候这些工具能够使程序的运行速度减慢20倍。
发明内容
本发明的目的是为了解决目前动态内存泄漏检测的检错效率低且速度慢的问题,本发明提供一种基于VxWorks操作系统的动态内存泄漏检测方法及装置。
本发明的基于VxWorks操作系统的动态内存泄漏检测方法,它是基于安装VxWorks操作系统的工控机和上位机实现的,所述工控机内嵌入有工控机软件,所述工控机软件的工作过程包括如下步骤:
用于调用函数LC_malloc()和函数LC_free()实现动态内存的跟踪,并以日志的形式记录各事件项的内存分配和内存释放的信息的步骤;
函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配,若返回一个有效的内存地址,则将动态内存分配信息输出到日志文件,若返回一个无效的内存地址,则不做任何日志操作;
函数LC_free()用于对指定的内存释放,若内存释放成功,则将动态内存释放信息输出到日志文件,如果内存释放失败,则不做任何日志操作;
用于将日志信息通过TCP通信协议并使用数据发送缓冲队列发送到上位机的步骤;
所述上位机内嵌入有上位机软件,所述上位机软件包括如下步骤:
用于从日志文件中读入日志信息,遍历日志信息中的每个日志事件项,并检查读入的每个日志事件项是否进行了内存分配操作或者内存释放操作的步骤;
用于当读入的日志事件项进行了内存分配操作时,将所述日志事件项的内存地址作为键值加入哈希表的步骤;
用于当读入的日志事件项进行了内存释放操作时,判断哈希表中是否存在所述日志事件项对应的内存地址的步骤;
用于当哈希表中存在内存释放操作的日志事件项的内存地址时,在哈希表中删除所述日志事件项对应的内存地址的步骤;
用于当哈希表中不存在内存释放操作的日志事件项的内存地址时,将所述日志事件项及相应信息加入到重复释放错误列表中的步骤;
用于当检测到进行了内存分配操作的日志事件项的已分配时间达到设定的阈值且没有进行内存释放操作时,将所述日志事件项标记为内存泄漏事件项的步骤;
用于当遍历完日志文件中所有日志事件项时,根据重复释放错误列表中的信息和哈希表中标记的内存泄漏事件项,定位发生内存泄漏的位置的步骤。
本发明的基于VxWorks操作系统的动态内存泄漏检测装置,它是基于安装VxWorks操作系统的工控机和上位机实现的,所述工控机包括如下装置:
用于调用函数LC_malloc()和函数LC_free()实现动态内存的跟踪,并以日志的形式记录各事件项的内存分配和内存释放的信息的装置;
函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配,若返回一个有效的内存地址,则将动态内存分配信息输出到日志文件,若返回一个无效的内存地址,则不做任何日志操作;
函数LC_free()用于对指定的内存释放,若内存释放成功,则将动态内存释放信息输出到日志文件,如果内存释放失败,则不做任何日志操作;
用于将日志信息通过TCP通信协议并使用数据发送缓冲队列发送到上位机的装置;
所述上位机包括如下装置:
用于从日志文件中读入日志信息,遍历日志信息中的每个日志事件项,并检查读入的每个日志事件项是否进行了内存分配操作或者内存释放操作的装置;
用于当读入的日志事件项进行了内存分配操作时,将所述日志事件项的内存地址作为键值加入哈希表的装置;
用于当读入的日志事件项进行了内存释放操作时,判断哈希表中是否存在所述日志事件项对应的内存地址的装置;
用于当哈希表中存在内存释放操作的日志事件项的内存地址时,在哈希表中删除所述日志事件项对应的内存地址的装置;
用于当哈希表中不存在内存释放操作的日志事件项的内存地址时,将所述日志事件项及相应信息加入到重复释放错误列表中的装置;
用于当检测到进行了内存分配操作的日志事件项的已分配时间达到设定的阈值且没有进行内存释放操作时,将所述日志事件项标记为内存泄漏事件项的装置;
用于当遍历完日志文件中所有日志事件项时,根据重复释放错误列表中的信息和哈希表中标记的内存泄漏事件项,定位发生内存泄漏的位置的装置。
本发明的优点在于,通过改写内存分配函数malloc()和内存释放函数free()得到函数LC_malloc()和LC_free(),以日志的形式记录内存分配和内存释放信息,实现动态内存的跟踪;通过TCP通信协议,使用数据发送缓冲队列,将日志信息从安装VxWorks的工控机上传到上位机;在上位机中,从日志文件中读入日志事件项,并对比内存的分配和释放,从日志文件中分析并检测出内存。本发明比现有动态内存泄漏检测的检错效率提高了30%,且速度也提高了20%。
附图说明
图1为本发明所述的实现动态内存的跟踪的流程示意图。
具体实施方式
具体实施方式一:结合图1说明本实施方式,本实施方式所述的基于VxWorks操作系统的动态内存泄漏检测方法,本发明的基于VxWorks操作系统的动态内存泄漏检测方法,它是基于安装VxWorks操作系统的工控机和上位机实现的,所述工控机内嵌入有工控机软件,所述工控机软件的工作过程包括如下步骤:
用于调用函数LC_malloc()和函数LC_free()实现动态内存的跟踪,并以日志的形式记录各事件项的内存分配和内存释放的信息的步骤;
函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配,若返回一个有效的内存地址,则将动态内存分配信息输出到日志文件,若返回一个无效的内存地址,则不做任何日志操作;
函数LC_free()用于对指定的内存释放,若内存释放成功,则将动态内存释放信息输出到日志文件,如果内存释放失败,则不做任何日志操作;
用于将日志信息通过TCP通信协议并使用数据发送缓冲队列发送到上位机的步骤;
所述上位机内嵌入有上位机软件,所述上位机软件包括如下步骤:
用于从日志文件中读入日志信息,遍历日志信息中的每个日志事件项,并检查读入的每个日志事件项是否进行了内存分配操作或者内存释放操作的步骤;
用于当读入的日志事件项进行了内存分配操作时,将所述日志事件项的内存地址作为键值加入哈希表的步骤;
用于当读入的日志事件项进行了内存释放操作时,判断哈希表中是否存在所述日志事件项对应的内存地址的步骤;
用于当哈希表中存在内存释放操作的日志事件项的内存地址时,在哈希表中删除所述日志事件项对应的内存地址的步骤;
用于当哈希表中不存在内存释放操作的日志事件项的内存地址时,将所述日志事件项及相应信息加入到重复释放错误列表中的步骤;
用于当检测到进行了内存分配操作的日志事件项的已分配时间达到设定的阈值且没有进行内存释放操作时,将所述日志事件项标记为内存泄漏事件项的步骤;
用于当遍历完日志文件中所有日志事件项时,根据重复释放错误列表中的信息和哈希表中标记的内存泄漏事件项,定位发生内存泄漏的位置的步骤。
本实施方式中还可以采用其它是非判断、逻辑判断的工具来替换哈希表。本实施方式中,通过TCP通信协议,安装VxWorks操作系统的工控机使用数据发送缓冲队将日志信息发送到上位机PC,这样分离了网络发送和硬件的中断,在控制端软件接收模块阻塞而导致网络阻塞的情况下,不会影响中断处理的速度或者定时轮询的次数。
为了能够从日志文件中分析并检测出内存泄漏,从日志文件中读入日志事件项,并对内存的分配和释放进行对比。在遍历日志文件的时候,检查每个事件项的操作是分配还是释放内存。如果发现事件项是内存分配操作,用内存地址作为键值把事件项加入哈希表。如果发现事件项是内存释放操作,在哈希表中删除对应的内存分配事件项。
如果在哈希表中没有找到对应的内存分配事件项,则说明检测到了重复释放错误。因为在哈希表中并没有对应内存块的申请操作,说明之前该内存块已被释放,现在试图释放该内存块即发生了重复释放操作。在程序中发生重复释放错误是十分危险的,会破坏数据的完整性,甚至会发生致命错误。
当一直遍历日志文件直到文件末尾,任何已经分配且没被释放的内存记录会仍然留在哈希表中。认定这种情况即发生了内存泄漏。进一步地,因为在日志信息中包含了事件发生的文件和行号,可以从中分析出发生内存泄漏事件的具体位置,这极大的方便了程序的调试工作。这个算法可以概括为以下的伪代码:
在算法的实现中,利用了内存块的地址作为哈希表的键值来比较内存的分配和释放操作。在分析日志的过程中,建立了一张以内存分配为内容的哈希表,其中包括时间戳、动作类型(malloc/free)、内存地址、内存大小、文件名、行号等。当碰到一个内存释放事件项时,在哈希表中查找相应的内存地址,如果找到对应的内存分配事件项,那么将这两个事件对从哈希表中移除,如果没有找到对应的内存分配事件项,那么把该事件加入到重复释放错误列表中。当达到日志文件的结尾时,所有留在哈希表中的分配事件被认为发生了内存泄漏。根据日志中包含的文件名等信息,可以定位发生内存泄漏的位置。
在实验程序中,逐行读入日志文件项,如果动作类型为malloc则把这条记录写入到hash.txt中;如果动作类型为free就以内存块地址为索引值,遍历整个hash.txt文件,删除其中动作类型为malloc且内存块地址为索引值的数据项,表明内存申请释放动作配对,无内存泄漏;如未找到,说明此处发生重复释放内存操作,程序中会给出严重警告信息(FATALERROR)。最后如果hash.txt中存在记录项,就说明此处内存申请未得到释放,即发生了内存泄漏。
具体实施方式二:本实施方式是对具体实施方式一所述的基于VxWorks操作系统的动态内存泄漏检测方法的进一步限定,它还包括:
通过宏定义的方式,改写内存分配函数malloc()获得函数LC_malloc()的步骤;
通过宏定义的方式,改写内存释放函数free()获得函数LC_free()的步骤。
对于malloc和LC_malloc函数接口不一致引起的问题,可以通过宏定义解决,由于内存泄漏的检测是发生在程序测试阶段,可以使用宏来替换LC_malloc()函数,使得提供给用户的函数接口均为malloc()。形式如下:
#ifdef_DEBUG
#defineDEBUG_MALLOC(size)LC_malloc(size,_FILE_,_LINE_)
#else
#defineDEBUG_MALLOCmalloc
#endif
#definemallocDEBUG_MALLOC
其中,_LINE_和_FILE_是C语言的预编译宏,这两个宏将在编译时在指定位置展开该文件名和该行的行号,这样就可以将调用malloc函数的文件名和行号记录到日志文件中,对可能发生内存泄漏错的位置予以记录。
将内存分配和释放信息写入日志文件时,需要注意多个任务间的互斥问题。系统采用一个二元信号量实现任务间的互斥,以保证日志文件不被多个任务同时写入。开始,信号量被初始化为可用,当其中一个任务试图写日志文件时,检查信号量是否可用,如果可用,则关闭信号量,然后执行写操作,待写操作完成后,重新设置信号量为可用;如果信号量不可用,则任务必须等待,当其他任务释放信号量以后,才可以执行写操作。这样,就可以很好的保护共享资源,日志文件的一致性不会被破坏。内存跟踪主要流程如图1所示:
日志文件的格式可以是多种多样的,在的系统中,采用如下的格式。每个记录包括时间戳、动作类型(malloc/free)、内存地址、内存大小、文件名、行号等。为了能够更加全面的测试程序中存在的内存泄漏问题,精确比较内存分配和释放操作,需要从系统启动到关闭之间一直对动态内存进行跟踪。而且,为了适应分析算法,日志中的记录是按照时间顺序排列的。
具体实施方式三:本实施方式是对具体实施方式一所述的基于VxWorks操作系统的动态内存泄漏检测方法的进一步限定,
所述函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配为:
函数LC_malloc()用于根据物理块链表中的参数进行内存分配;所述函数LC_free()用于对指定的内存释放为:
函数LC_free()用于对物理块链表中指定的内存释放;
所述物理块链表用于存储所有内存块的状态和连接所有物理位置相临的已分配内存块和未分配内存块。
本实施方式中引入一种新的数据结构来管理链表,传统的内存管理方法是使用两个链表,一个是已分配链表和一个空闲链表,本实施方式使用一种新的数据结构来管理,称为物理块链表,它用来连接所有物理位置相临的内存块,当需要释放已分配块和合并相邻块时,只需要在物理链表中检查回收内存块的相邻两个内存块的状态便可以决定是否可以合并。所述内存块分为已分配内存块和未分配内存块。
具体实施方式四:结合图1说明本实施方式,本实施方式所述的基于VxWorks操作系统的动态内存泄漏检测装置,它是基于安装VxWorks操作系统的工控机和上位机实现的,所述工控机包括如下装置:
用于调用函数LC_malloc()和函数LC_free()实现动态内存的跟踪,并以日志的形式记录各事件项的内存分配和内存释放的信息的装置;
函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配,若返回一个有效的内存地址,则将动态内存分配信息输出到日志文件,若返回一个无效的内存地址,则不做任何日志操作;
函数LC_free()用于对指定的内存释放,若内存释放成功,则将动态内存释放信息输出到日志文件,如果内存释放失败,则不做任何日志操作;
用于将日志信息通过TCP通信协议并使用数据发送缓冲队列发送到上位机的装置;
所述上位机包括如下装置:
用于从日志文件中读入日志信息,遍历日志信息中的每个日志事件项,并检查读入的每个日志事件项是否进行了内存分配操作或者内存释放操作的装置;
用于当读入的日志事件项进行了内存分配操作时,将所述日志事件项的内存地址作为键值加入哈希表的装置;
用于当读入的日志事件项进行了内存释放操作时,判断哈希表中是否存在所述日志事件项对应的内存地址的装置;
用于当哈希表中存在内存释放操作的日志事件项的内存地址时,在哈希表中删除所述日志事件项对应的内存地址的装置;
用于当哈希表中不存在内存释放操作的日志事件项的内存地址时,将所述日志事件项及相应信息加入到重复释放错误列表中的装置;
用于当检测到进行了内存分配操作的日志事件项的已分配时间达到设定的阈值且没有进行内存释放操作时,将所述日志事件项标记为内存泄漏事件项的装置;
用于当遍历完日志文件中所有日志事件项时,根据重复释放错误列表中的信息和哈希表中标记的内存泄漏事件项,定位发生内存泄漏的位置的装置。
具体实施方式五:本实施方式是对具体实施方式四所述的基于VxWorks操作系统的动态内存泄漏检测装置的进一步限定,
它还包括:
通过宏定义的方式,改写内存分配函数malloc()获得函数LC_malloc()的装置;
通过宏定义的方式,改写内存释放函数free()获得函数LC_free()的装置。
具体实施方式六:本实施方式是对具体实施方式四所述的基于VxWorks操作系统的动态内存泄漏检测装置的进一步限定,
所述函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配为:
函数LC_malloc()用于根据物理块链表中的参数进行内存分配;所述函数LC_free()用于对指定的内存释放为:
函数LC_free()用于对物理块链表中指定的内存释放;
所述物理块链表用于存储所有内存块的状态和连接所有物理位置相临的已分配内存块和未分配内存块。

Claims (6)

1.基于VxWorks操作系统的动态内存泄漏检测方法,它是基于安装VxWorks操作系统的工控机和上位机实现的,其特征在于,所述工控机内嵌入有工控机软件,所述工控机软件的工作过程包括如下步骤:
用于调用函数LC_malloc()和函数LC_free()实现动态内存的跟踪,并以日志的形式记录各事件项的内存分配和内存释放的信息的步骤;
函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配,若返回一个有效的内存地址,则将动态内存分配信息输出到日志文件,若返回一个无效的内存地址,则不做任何日志操作;
函数LC_free()用于对指定的内存释放,若内存释放成功,则将动态内存释放信息输出到日志文件,如果内存释放失败,则不做任何日志操作;
用于将日志信息通过TCP通信协议并使用数据发送缓冲队列发送到上位机的步骤;
所述上位机内嵌入有上位机软件,所述上位机软件包括如下步骤:
用于从日志文件中读入日志信息,遍历日志信息中的每个日志事件项,并检查读入的每个日志事件项是否进行了内存分配操作或者内存释放操作的步骤;
用于当读入的日志事件项进行了内存分配操作时,将所述日志事件项的内存地址作为键值加入哈希表的步骤;
用于当读入的日志事件项进行了内存释放操作时,判断哈希表中是否存在所述日志事件项对应的内存地址的步骤;
用于当哈希表中存在内存释放操作的日志事件项的内存地址时,在哈希表中删除所述日志事件项对应的内存地址的步骤;
用于当哈希表中不存在内存释放操作的日志事件项的内存地址时,将所述日志事件项及相应信息加入到重复释放错误列表中的步骤;
用于当检测到进行了内存分配操作的日志事件项的已分配时间达到设定的阈值且没有进行内存释放操作时,将所述日志事件项标记为内存泄漏事件项的步骤;
用于当遍历完日志文件中所有日志事件项时,根据重复释放错误列表中的信息和哈希表中标记的内存泄漏事件项,定位发生内存泄漏的位置的步骤;
通过改写内存分配函数malloc()和内存释放函数free()得到函数LC_malloc()和LC_free()。
2.根据权利要求1所述的基于VxWorks操作系统的动态内存泄漏检测方法,其特征在于,它还包括:
通过宏定义的方式,改写内存分配函数malloc()获得函数LC_malloc()的步骤;
通过宏定义的方式,改写内存释放函数free()获得函数LC_free()的步骤。
3.根据权利要求1所述的基于VxWorks操作系统的动态内存泄漏检测方法,其特征在于,
所述函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配为:
函数LC_malloc()用于根据物理块链表中的参数进行内存分配;所述函数LC_free()用于对指定的内存释放为:
函数LC_free()用于对物理块链表中指定的内存释放;
所述物理块链表用于存储所有内存块的状态和连接所有物理位置相临的已分配内存块和未分配内存块。
4.基于VxWorks操作系统的动态内存泄漏检测装置,它是基于安装VxWorks操作系统的工控机和上位机实现的,其特征在于,所述工控机包括如下装置:
用于调用函数LC_malloc()和函数LC_free()实现动态内存的跟踪,并以日志的形式记录各事件项的内存分配和内存释放的信息的装置;
函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配,若返回一个有效的内存地址,则将动态内存分配信息输出到日志文件,若返回一个无效的内存地址,则不做任何日志操作;
函数LC_free()用于对指定的内存释放,若内存释放成功,则将动态内存释放信息输出到日志文件,如果内存释放失败,则不做任何日志操作;
用于将日志信息通过TCP通信协议并使用数据发送缓冲队列发送到上位机的装置;
所述上位机包括如下装置:
用于从日志文件中读入日志信息,遍历日志信息中的每个日志事件项,并检查读入的每个日志事件项是否进行了内存分配操作或者内存释放操作的装置;
用于当读入的日志事件项进行了内存分配操作时,将所述日志事件项的内存地址作为键值加入哈希表的装置;
用于当读入的日志事件项进行了内存释放操作时,判断哈希表中是否存在所述日志事件项对应的内存地址的装置;
用于当哈希表中存在内存释放操作的日志事件项的内存地址时,在哈希表中删除所述日志事件项对应的内存地址的装置;
用于当哈希表中不存在内存释放操作的日志事件项的内存地址时,将所述日志事件项及相应信息加入到重复释放错误列表中的装置;
用于当检测到进行了内存分配操作的日志事件项的已分配时间达到设定的阈值且没有进行内存释放操作时,将所述日志事件项标记为内存泄漏事件项的装置;
用于当遍历完日志文件中所有日志事件项时,根据重复释放错误列表中的信息和哈希表中标记的内存泄漏事件项,定位发生内存泄漏的位置的装置;
通过改写内存分配函数malloc()和内存释放函数free()得到函数LC_malloc()和LC_free()。
5.根据权利要求4所述的基于VxWorks操作系统的动态内存泄漏检测装置,其特征在于,它还包括:
通过宏定义的方式,改写内存分配函数malloc()获得函数LC_malloc()的装置;
通过宏定义的方式,改写内存释放函数free()获得函数LC_free()的装置。
6.根据权利要求4所述的基于VxWorks操作系统的动态内存泄漏检测装置,其特征在于,
所述函数LC_malloc()用于根据用户需求内存大小的参数进行内存分配为:
函数LC_malloc()用于根据物理块链表中的参数进行内存分配;所述函数LC_free()用于对指定的内存释放为:
函数LC_free()用于对物理块链表中指定的内存释放;
所述物理块链表用于存储所有内存块的状态和连接所有物理位置相临的已分配内存块和未分配内存块。
CN201310428609.4A 2013-09-18 2013-09-18 基于VxWorks操作系统的动态内存泄漏检测方法及装置 Active CN103455424B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310428609.4A CN103455424B (zh) 2013-09-18 2013-09-18 基于VxWorks操作系统的动态内存泄漏检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310428609.4A CN103455424B (zh) 2013-09-18 2013-09-18 基于VxWorks操作系统的动态内存泄漏检测方法及装置

Publications (2)

Publication Number Publication Date
CN103455424A CN103455424A (zh) 2013-12-18
CN103455424B true CN103455424B (zh) 2015-12-02

Family

ID=49737824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310428609.4A Active CN103455424B (zh) 2013-09-18 2013-09-18 基于VxWorks操作系统的动态内存泄漏检测方法及装置

Country Status (1)

Country Link
CN (1) CN103455424B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239205A (zh) * 2014-09-05 2014-12-24 上海斐讯数据通信技术有限公司 内存重复释放的检测方法
CN104360954B (zh) * 2014-10-30 2017-10-24 上海斐讯数据通信技术有限公司 一种已申请内存块的统计方法和系统
CN106407031B (zh) * 2016-09-14 2019-05-28 华为数字技术(成都)有限公司 一种内存泄露定位方法及电子设备
CN106844207A (zh) * 2017-01-17 2017-06-13 上海斐讯数据通信技术有限公司 一种诊断内存泄漏的方法及设备
CN107066390B (zh) * 2017-04-24 2020-01-17 许继集团有限公司 一种动态内存泄漏检测方法及系统
CN107346266A (zh) * 2017-06-09 2017-11-14 烽火通信科技股份有限公司 基于VxWorks操作系统的内存分配信息跟踪方法及装置
CN107220182B (zh) * 2017-06-20 2019-07-26 中国电子科技集团公司第五十四研究所 一种内存重复释放错误检测方法
CN111488215A (zh) * 2019-01-28 2020-08-04 普天信息技术有限公司 一种检测内存重复释放的方法
CN109933525A (zh) * 2019-02-22 2019-06-25 深圳市吉祥腾达科技有限公司 一种通用的内存泄露检测方法
CN111858112B (zh) * 2019-04-26 2023-04-25 腾讯科技(深圳)有限公司 一种检测内存泄露的方法、客户端及服务器
CN110704176A (zh) * 2019-08-19 2020-01-17 深圳英飞拓科技股份有限公司 系统堆残留内存的监测方法及装置
CN110781075B (zh) * 2019-09-19 2022-08-30 深圳震有科技股份有限公司 一种内存泄漏的检测方法、装置、系统及存储介质
CN110971481B (zh) * 2019-11-05 2021-11-05 天津芯海创科技有限公司 一种缓存地址管理逻辑的测试方法及装置
CN111506500B (zh) * 2020-04-09 2023-05-23 北京奇艺世纪科技有限公司 内存泄露检测方法、装置、电子设备及可读存储介质
CN112527663A (zh) * 2020-12-17 2021-03-19 杭州国芯科技股份有限公司 一种嵌入式系统中软件所用内存的检测方法
CN113268439A (zh) * 2021-05-26 2021-08-17 北京金山云网络技术有限公司 内存地址的查找方法和装置、电子设备和存储介质
CN113485846A (zh) * 2021-08-02 2021-10-08 北京字节跳动网络技术有限公司 一种内存处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490720A (zh) * 2002-10-17 2004-04-21 深圳市中兴通讯股份有限公司 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101587455A (zh) * 2008-12-11 2009-11-25 南京南瑞继保电气有限公司 一种用于vxWorks操作系统检查内存泄漏的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490720A (zh) * 2002-10-17 2004-04-21 深圳市中兴通讯股份有限公司 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101587455A (zh) * 2008-12-11 2009-11-25 南京南瑞继保电气有限公司 一种用于vxWorks操作系统检查内存泄漏的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"一种适用嵌入式系统的自适应动态内存管理方案";王铮等;《计算机技术与发展》;20070331;第17卷(第3期);第48-50,54页 *
"基于VxWorks辅助时钟的高速网络通信";王公峰等;《自动化技术与应用》;20121231;第31卷(第12期);第32-38页 *
"嵌入式系统ZXR10缓冲区管理研究与实现";刘东栋;《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑 》;20070615(第06期);第三章 *
"有效的C++内存泄露检测方法";邵叶秦;《电脑知识与技术(学术交流)》;20071029;第3卷(第14期);第455-456页 *

Also Published As

Publication number Publication date
CN103455424A (zh) 2013-12-18

Similar Documents

Publication Publication Date Title
CN103455424B (zh) 基于VxWorks操作系统的动态内存泄漏检测方法及装置
Shi et al. Do I use the wrong definition? DefUse: Definition-use invariants for detecting concurrency and sequential bugs
Xie et al. Acculock: Accurate and efficient detection of data races
US8185880B2 (en) Optimizing heap memory usage
KR20190095458A (ko) 분산형 하드웨어 트레이싱
US8533681B2 (en) Atomicity violation detection using access interleaving invariants
US20090193298A1 (en) System and method of fault detection, diagnosis and prevention for complex computing systems
CN103577335B (zh) 一种内存垃圾回收系统及方法
CN103064784B (zh) 面向Xen环境的运行时内存泄漏检测方法及其实现系统
CN103109276B (zh) 系统测试方法
US20110072299A1 (en) Leak monitoring system and associated methods
US9558055B2 (en) System level memory leak detection
Chen et al. Who allocated my memory? Detecting custom memory allocators in C binaries
KR20190058706A (ko) 사이클 그래프에서 객체 수명을 관리하는 기법
CN104951395A (zh) 一种嵌入式系统调试信息处理方法及装置
US20170351606A1 (en) Persistent memory garbage collection
Palyvos-Giannas et al. Genealog: Fine-grained data streaming provenance at the edge
US8898648B2 (en) Methodology for fast detection of false sharing in threaded scientific codes
Chen et al. On the detection of custom memory allocators in C binaries
CN102141955B (zh) 一种基于Linux的内核日志系统及实现方法
CN111198883A (zh) 一种车辆实时布控信息处理方法、系统及存储介质
US20130262947A1 (en) Information processing apparatus, and method of controlling information processing apparatus
Yu et al. AdaptiveLock: efficient hybrid data race detection based on real-world locking patterns
CN108052644A (zh) 数据模式日志文件系统的数据写入方法及系统
CN102685590A (zh) 机顶盒内存管理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant