CN107346266A - 基于VxWorks操作系统的内存分配信息跟踪方法及装置 - Google Patents

基于VxWorks操作系统的内存分配信息跟踪方法及装置 Download PDF

Info

Publication number
CN107346266A
CN107346266A CN201710433988.4A CN201710433988A CN107346266A CN 107346266 A CN107346266 A CN 107346266A CN 201710433988 A CN201710433988 A CN 201710433988A CN 107346266 A CN107346266 A CN 107346266A
Authority
CN
China
Prior art keywords
distribution
memory
information
operating system
task
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.)
Pending
Application number
CN201710433988.4A
Other languages
English (en)
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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201710433988.4A priority Critical patent/CN107346266A/zh
Publication of CN107346266A publication Critical patent/CN107346266A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于VxWorks操作系统的内存分配信息跟踪方法及装置,涉及嵌入式操作系统领域。该方法包括以下步骤:编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;将内存的特定区域预留出来,划分为若干分配信息块;调用分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;统计内存的使用情况,若分配信息块的数量一直增加,有分配信息块一直没被销毁,推定对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。本发明对内存的泄漏进行精确跟踪和定位,从而解决内存泄漏的问题。

Description

基于VxWorks操作系统的内存分配信息跟踪方法及装置
技术领域
本发明涉及嵌入式操作系统领域,具体是涉及一种基于VxWorks操作系统的内存分配信息跟踪方法及装置。
背景技术
随着嵌入式设备的高速发展,嵌入式操作系统越来越广泛的被使用,其软件系统也越来越复杂,例如,VxWorks操作系统就是一种由风河公司开发的嵌入式操作系统。
对一台PON(Passive Optical Network,无源光网络)系统OLT(Optical LineTerminal,光线路终端)设备,常常需要存储数千个ONU(Optical Network Unit,光网络单元)的用户数据,系统的任务数也达到上百个。此时,系统的内存分配和释放将变得极为频繁,如果程序设计不合理,极有可能在系统运行过程中出现内存泄漏,危及嵌入式系统的稳定,长时间的内存泄漏将导致系统崩溃。
传统方法在应对内存泄漏的定位时,通常是通过对内存分配/释放函数的替换,在分配和释放时记录配置和释放信息,以便定位是否存在内存泄漏,但这种方法存在一些难以克服的问题:
1、需要对全部源码进行库编译,让跟踪函数链接到每个上层应用的库里;
2、如果malloc/free已经在模块内被替换,应用此方法,需要在模块内修改最底层的内存分配释放函数,否则无效;
3、只能跟踪最底层的malloc/free函数,无法跟踪上级调用,在很多情况下,难以定位问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种基于VxWorks操作系统的内存分配信息跟踪方法及装置,对内存的泄漏进行精确跟踪和定位,从而解决内存泄漏的问题。
本发明提供一种基于VxWorks操作系统的内存分配信息跟踪方法,包括以下步骤:
A、编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;
B、将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;
C、统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。
在上述技术方案的基础上,步骤C中,统计内存的使用情况时,统计分配次数、释放次数、分配总的字节数、分配频率。
在上述技术方案的基础上,步骤C中,还包括以下步骤:如果发现内存中某个任务的分配异常,跟踪该任务的分配调用轨迹,定位内存分配的上层函数。
在上述技术方案的基础上,所述跟踪该任务的分配调用轨迹,定位内存分配的上层函数的过程为:调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。
本发明还提供一种基于VxWorks操作系统的内存分配信息跟踪系统,该系统包括编译单元、内存信息跟踪单元、分配轨迹追踪单元,其中:
编译单元用于:编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;
内存信息跟踪单元用于:将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务信息,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;
分配轨迹追踪单元用于:统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。
在上述技术方案的基础上,所述分配轨迹追踪单元统计内存的使用情况时,统计分配次数、释放次数、分配总的字节数、分配频率。
在上述技术方案的基础上,所述分配轨迹追踪单元如果发现内存中某个任务的分配异常,跟踪该任务的分配调用轨迹,定位内存分配的上层函数。
在上述技术方案的基础上,所述分配轨迹追踪单元调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。
与现有技术相比,本发明的优点如下:
(1)本发明编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。本发明不需要被检测模块源码修改和替换,增加内存跟踪模块的库之后,原代码和库无需任何修改,就能够被跟踪和检查。在需要跟踪内存分配/释放信息时,在内存反复使用过程中,对内存的泄漏进行精确跟踪和定位,从而解决内存泄漏的问题。
(2)如果发现内存中某个任务的分配异常,跟踪该任务的分配调用轨迹,定位内存分配的上层函数。本发明能够跟踪调用内存分配的任务信息。
(3)本发明调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。本发明还能够跟踪调用分配栈轨迹,记录内存分配调用的整个过程。
附图说明
图1是本发明实施例中基于VxWorks操作系统的内存分配信息跟踪方法的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种基于VxWorks操作系统的内存分配信息跟踪方法,包括以下步骤:
A、编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;VxWorks操作系统内其他模块无需做修改;
B、将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;
C、统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。
步骤C中,统计内存的使用情况时,统计分配次数(malloc_count)、释放次数(free_count)、分配总的字节数(malloc_bytes)、分配频率(malloc_freq)。
步骤C中,还包括以下步骤:如果发现内存中某个任务的分配异常,例如:出现频繁的大量malloc调用和字节数,跟踪该任务的分配调用轨迹,定位内存分配的上层函数。
跟踪该任务的分配调用轨迹,定位内存分配的上层函数的过程为:调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。
本发明实施例还提供一种基于VxWorks操作系统的内存分配信息跟踪系统,该系统包括编译单元、内存信息跟踪单元、分配轨迹追踪单元,其中:
编译单元用于:编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;
内存信息跟踪单元用于:将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务信息,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;
分配轨迹追踪单元用于:统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。
分配轨迹追踪单元统计内存的使用情况时,统计分配次数(malloc_count)、释放次数(free_count)、分配总的字节数(malloc_bytes)、分配频率(malloc_freq)。
分配轨迹追踪单元如果发现内存中某个任务的分配异常,例如:出现频繁的大量malloc调用和字节数,跟踪该任务的分配调用轨迹,定位内存分配的上层函数:分配轨迹追踪单元调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。
下面举例说明。
首先,编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;VxWorks操作系统内其他模块无需做修改;
然后,使能内存分配信息跟踪功能:
在命令行中调用命令set malloc_debug enable,开始记录VxWorks操作系统中各任务的内存分配/释放,实现内存信息跟踪。
查看内存分配统计信息:调用命令show malloc_debug statis;
继续查看内存分配统计情况:show malloc_debug detail;
Show malloc_debug detail命令显示的每一条记录为一次内存的分配记录,通常内存分配/释放配对出现,在一个稳定的VxWorks操作系统中,分配的记录数目基本保持稳定,不会大幅增加,如果分配记录一直增加,VxWorks操作系统可能存在内存泄漏,VxWorks操作系统将在内存耗尽后崩溃或出现异常。以此案为例,tIGMPv3任务有一条存在51秒的记录。
追踪任务的分配轨迹:
当发现出现异常的分配记录时,可以通过追踪分配轨迹定位内存分配的上层函数,以上图中的tIGMPv3任务为例,追踪此任务的上层分配轨迹,层数为4(缺省)。
通过跟踪栈任务,可以定位到上层调用内存分配的函数为igmp_join_add_group。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。

Claims (8)

1.一种基于VxWorks操作系统的内存分配信息跟踪方法,其特征在于,包括以下步骤:
A、编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;
B、将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;
C、统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。
2.如权利要求1所述的基于VxWorks操作系统的内存分配信息跟踪方法,其特征在于:步骤C中,统计内存的使用情况时,统计分配次数、释放次数、分配总的字节数、分配频率。
3.如权利要求2所述的基于VxWorks操作系统的内存分配信息跟踪方法,其特征在于:步骤C中,还包括以下步骤:如果发现内存中某个任务的分配异常,跟踪该任务的分配调用轨迹,定位内存分配的上层函数。
4.如权利要求3所述的基于VxWorks操作系统的内存分配信息跟踪方法,其特征在于:所述跟踪该任务的分配调用轨迹,定位内存分配的上层函数的过程为:调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。
5.一种基于VxWorks操作系统的内存分配信息跟踪系统,其特征在于:该系统包括编译单元、内存信息跟踪单元、分配轨迹追踪单元,其中:
编译单元用于:编译VxWorks操作系统底层的分配函数、释放函数,接管VxWorks操作系统的内存分配接口、释放接口;
内存信息跟踪单元用于:将内存的特定区域预留出来,划分为若干分配信息块;调用VxWorks操作系统的分配内存时,记录分配的地址、字节数、时间戳、分配内存的任务信息,存储进分配信息块;释放内存的空间时,搜索到相应分配信息块,进行销毁,实现内存信息跟踪;
分配轨迹追踪单元用于:统计内存的使用情况,如果分配信息块的数量一直增加,有分配信息块一直没有被销毁,推定该分配信息块对应的任务导致内存泄漏,锁定该任务,实现分配轨迹追踪。
6.如权利要求5所述的基于VxWorks操作系统的内存分配信息跟踪系统,其特征在于:所述分配轨迹追踪单元统计内存的使用情况时,统计分配次数、释放次数、分配总的字节数、分配频率。
7.如权利要求6所述的基于VxWorks操作系统的内存分配信息跟踪系统,其特征在于:所述分配轨迹追踪单元如果发现内存中某个任务的分配异常,跟踪该任务的分配调用轨迹,定位内存分配的上层函数。
8.如权利要求7所述的基于VxWorks操作系统的内存分配信息跟踪系统,其特征在于:所述分配轨迹追踪单元调用VxWorks操作系统的任务栈空间跟踪功能,在应用层软件嵌套调用分配函数,从栈顶逐层跟踪,跟踪2~40层的分配上级调用层次,根据实际情况,分析出内存泄漏的泄漏点。
CN201710433988.4A 2017-06-09 2017-06-09 基于VxWorks操作系统的内存分配信息跟踪方法及装置 Pending CN107346266A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710433988.4A CN107346266A (zh) 2017-06-09 2017-06-09 基于VxWorks操作系统的内存分配信息跟踪方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710433988.4A CN107346266A (zh) 2017-06-09 2017-06-09 基于VxWorks操作系统的内存分配信息跟踪方法及装置

Publications (1)

Publication Number Publication Date
CN107346266A true CN107346266A (zh) 2017-11-14

Family

ID=60253320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710433988.4A Pending CN107346266A (zh) 2017-06-09 2017-06-09 基于VxWorks操作系统的内存分配信息跟踪方法及装置

Country Status (1)

Country Link
CN (1) CN107346266A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781075A (zh) * 2019-09-19 2020-02-11 深圳震有科技股份有限公司 一种内存泄漏的检测方法、装置、系统及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587455A (zh) * 2008-12-11 2009-11-25 南京南瑞继保电气有限公司 一种用于vxWorks操作系统检查内存泄漏的方法
CN103268287A (zh) * 2013-06-05 2013-08-28 福州瑞芯微电子有限公司 检测内存泄露的方法与装置
CN103455424A (zh) * 2013-09-18 2013-12-18 哈尔滨工业大学 基于VxWorks操作系统的动态内存泄漏检测方法及装置
CN104239192A (zh) * 2013-06-21 2014-12-24 中兴通讯股份有限公司 内存监控处理方法及装置
CN104965779A (zh) * 2015-05-22 2015-10-07 浪潮电子信息产业股份有限公司 一种基于PoolMon的内存泄露检测和定位的方法及装置
CN105204996A (zh) * 2015-09-24 2015-12-30 努比亚技术有限公司 内存泄露检测装置及方法、终端
CN105373479A (zh) * 2015-12-14 2016-03-02 厦门美图移动科技有限公司 一种内存泄露的自动化测试方法、装置及移动终端

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587455A (zh) * 2008-12-11 2009-11-25 南京南瑞继保电气有限公司 一种用于vxWorks操作系统检查内存泄漏的方法
CN103268287A (zh) * 2013-06-05 2013-08-28 福州瑞芯微电子有限公司 检测内存泄露的方法与装置
CN104239192A (zh) * 2013-06-21 2014-12-24 中兴通讯股份有限公司 内存监控处理方法及装置
CN103455424A (zh) * 2013-09-18 2013-12-18 哈尔滨工业大学 基于VxWorks操作系统的动态内存泄漏检测方法及装置
CN104965779A (zh) * 2015-05-22 2015-10-07 浪潮电子信息产业股份有限公司 一种基于PoolMon的内存泄露检测和定位的方法及装置
CN105204996A (zh) * 2015-09-24 2015-12-30 努比亚技术有限公司 内存泄露检测装置及方法、终端
CN105373479A (zh) * 2015-12-14 2016-03-02 厦门美图移动科技有限公司 一种内存泄露的自动化测试方法、装置及移动终端

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781075A (zh) * 2019-09-19 2020-02-11 深圳震有科技股份有限公司 一种内存泄漏的检测方法、装置、系统及存储介质
CN110781075B (zh) * 2019-09-19 2022-08-30 深圳震有科技股份有限公司 一种内存泄漏的检测方法、装置、系统及存储介质

Similar Documents

Publication Publication Date Title
KR102099544B1 (ko) 스트리밍 데이터의 분배 처리 방법 및 디바이스
US8429620B2 (en) Memory leak diagnosis
CN103455424B (zh) 基于VxWorks操作系统的动态内存泄漏检测方法及装置
CN102567399B (zh) 一种访问数据库的方法和装置
CN102760080A (zh) 一种内存管理的方法和装置
CN105912601A (zh) 能量管理系统分布式实时内存数据库的分区存储方法
CN102693283A (zh) 一种嵌入式系统的数据分区存储方法及系统引导启动方法
CN110413521A (zh) 一种堆内存的写越界检测方法和装置
CN101198937A (zh) 安全存储管理系统和方法
CN102752672A (zh) 光纤配线方法、设备及系统
CN101763415B (zh) 一种数据库的b树索引的生成方法及装置
CN111324450A (zh) 一种基于lte协议栈的内存池泄露的方法及其系统
CN100570568C (zh) 用于实时操作系统的定时方法和系统
CN103309796A (zh) 一种组件对象模型对象的监控方法和装置
CN110493670A (zh) 一种光缆中断判定方法及装置
CN107346266A (zh) 基于VxWorks操作系统的内存分配信息跟踪方法及装置
CN106326014A (zh) 一种资源访问方法及装置
CN104951370B (zh) 一种内存管理方法及装置
CN102945163A (zh) 一种用于嵌入式系统的信号槽结构
CN104683148B (zh) 一种统一端口系统及其访问逻辑端口的方法
CN101621396A (zh) 单板自动管理装置及方法
CN101887456A (zh) 一种数据迁移系统和方法
CN106484778A (zh) 基于soa的物料分发方法及物料分发装置
CN103365716A (zh) 业务操作任务中的数据跟踪方法、装置及主机
CN102664754B (zh) 一种更新端口索引的方法、设备以及多设备系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171114