移动终端及其内存泄露检测方法

文档序号:6603122阅读:227来源:国知局
专利名称:移动终端及其内存泄露检测方法
技术领域
本发明涉及一种移动终端内存泄露检测方法,特别适用于手机等移动通信终端, 及带界面操作的嵌入式设备。
背景技术
现在的移动终端(如手机系统)已经非常庞大,用记录所有内存分配和释放记录来确定内存泄露将是非常艰难的,许多内存的分配本来就是一次性的,直到关机都不会被释放,通过记录所有内存的信息来定位内存泄露就显得效率低下,代价比较大,特别是有些内存泄露甚至是手机内部的交互事件引起的,传统的方法根本无法觉察到!

发明内容
本发明要解决的技术问题是为了克服现有技术中移动终端内存泄露检测效率低下等缺陷,提供一种高效率和快速的移动终端及其内存泄露检测方法。本发明是通过下述技术方案来解决上述技术问题的一种移动终端,其特点在于,其包括一命令解析模块,用于接收并且分析pc发送过来的数据然后执行对应的操作,对各模块进行测试;—内存记录模块,用于记录分配内存的地址、函数名和行数,及释放内存的时候删除该记录;一数据分析模块,用于打印并分析未被释放的内存信息。较佳地,打印信息中只出现一次的是属于被测试模块一次性分配的数据,不属于泄漏;打印信息中重复多次出现的数据,则为内存泄漏。较佳地,该移动终端为移动通信终端或带界面操作的嵌入式设备。本发明的另一技术方案为一种所述移动终端的内存泄露检测方法,其特点在于, 其包括如下步骤S1、使移动终端的被测试模块处于初始入口状态,在PC端发送启动内存检测命令, 移动终端启动内存记录模块;&、手动操作进入移动终端的被检测模块,对该被检测模块进行各项功能操作,然后回到初始入口状态;S3、重复步骤&,此时的操作包含步骤&中的操作,同时也可以进行更多的操作, 再次返回初始入口状态;、、在PC端发送停止内存检测命令,同时接收移动终端发送来的内存分配信息数据。较佳地,打印信息中只出现一次的是属于被测试模块一次性分配的数据,不属于泄漏;打印信息中重复多次出现的数据,则为内存泄漏。较佳地,步骤&中的对被测试模块的各项功能操作包括反复开启关闭该模块,使用该模块的某些功能以及并发运行其他模块。较佳地,在步骤S1I3中初始入口状态保持一致,即移动终端的显示界面、开启的应用、硬件外设和工作状态均保持一致。本发明的积极进步效果在于本发明内存泄露检测方法可以提高检测的速度,精确度。具有很强的可操作性,甚至可以作为移动终端的一个常驻模块,由测试人员来操作发现问题。采用本发明的方法,可以很全面的检测手机系统具体模块的内存泄漏,覆盖更多的测试路径,使内存泄露检查全面、快速。


图1为本发明的移动终端的模块图。图2为本发明的内存泄露检测方法的流程图。图3为本发明的手机与pc机数据交互流程图。图4为本发明的内存分配信息数据分析图。
具体实施例方式下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。如图1-4所示,本发明的移动终端,包括一命令解析模块1,用于接收并且分析pc 发送过来的数据然后执行对应的操作,对各模块进行测试,一般的嵌入式设备都具备与PC 交互数据的功能,本发明在其基础上扩展一个pc对手机的命令项即可;一内存记录模块2, 用于记录分配内存的地址、函数名和行数,及释放内存的时候删除该记录;一数据分析模块 3,用于打印并分析未被释放的内存信息。其中,该移动终端可以为移动通信终端或带界面操作的嵌入式设备。其中停止内存记录模块的时候,打印未被释放的内存信息。而本发明的移动终端的内存泄露检测方法,至少要包括如下步骤S1、使移动终端的被测试模块处于初始入口状态,在PC端发送启动内存检测命令, 移动终端启动内存记录模块;&、手动操作进入移动终端的被检测模块,对该被检测模块进行各项功能操作,然后回到初始入口状态;&、重复步骤&,此时的操作包含步骤&中的操作,同时也可以进行更多的操作, 再次返回初始入口状态;、、在PC端发送停止内存检测命令,同时接收移动终端发送来的内存分配信息数据。本发明的总体思想为首先确定手机初始状态,然后对手机进行一系列可以重复进行的操作,然后再退回到手机的初始状态,通过分析内存分配的增量信息即可以准确定位手机内存泄露!本实施例中,移动终端选用手机,被测试模块以蓝牙模块为例加以说明。如图2,步骤101,先使手机处于蓝牙入口界面(初始状态A),通过数据线连接pc 机与手机,PC端发送启动内存记录的命令,手机端接收到命令启动内存记录,此时开始记录内存的分配状态;步骤102,这时候可以进入蓝牙模块菜单进行操作,例如反复开启关闭蓝牙功能,搜索连接其他蓝牙设备,设置蓝牙可见状态,通过蓝牙收发文件等,可以把要测试的模块的各种功能都运行一遍,交互事件也可以进行,例如蓝牙操作过程中拨打接听电话, 播放音乐等,图中这一系列操作称为B。步骤103,然后返回到初始状态A。之后步骤104, 再进入蓝牙模块进行各种操作,称作为D,此时的操作应包含上一次的操作,也可以进行更多的操作,即数量上,D >= B。最后步骤105,再返回蓝牙入口界面(状态A)。步骤106, 再次通过pc端发送停止内存检测的命令,同时接收手机端发送过来的内存分配信息数据。 上述步骤101 106在实际中的具体实现是本领域的现有技术,并非本发明的发明点所在。其中,手机初始状态与操作完成后返回的状态一致包含以下几个方面1、手机显示界面处于一致;2、手机实际开启应用一致(例如,操作过程中开启了蓝牙模块,回到原界面状态的时候蓝牙模块也处于开启状态);3、手机包含的硬件外设一致(例如开始的时候连接了蓝牙耳机,最后的状态也必须是连接蓝牙耳机);4、工作状态也应保持一致(例如开始的时候有mp3背景播放,结束状态也应有mp3背景播放)。信息分析过程如图4所示,步骤201,取内存分配记录;步骤202,打印信息中只出现一次的是属于被测试模块一次性分配的数据,不属于泄漏;步骤203,如果重复多次出现的数据,则可以定性为内存泄漏,进行重点分析。其中,以一种编程语言为例,内存记录模块的源代码如下//初始化内存记录模块的数组void mem—dbg init (void);Il分配内存的时候记录分配内存信息的函数名和行数void mem—dbg_addr_record(void*pAddr, unsigned int bytes, char*fn, unsigned int In);
V内存被释放的时候清除记录的信息void mem_dbg_addr_clesr(void^pAddr);
结束检测的是时候将信息dump到pc端void mem—dbg—dump (void);//用于pc端发送命令给手机侧的时候开始和结束监控void mem_dbg_monitor(U32 bFlag);H----------------memory debug start-------------typedef S8 signed char ;typedef S32 int ;typedef U8 unsigned char ;
typedef U32 unsigned int ;typedef struct_MEM_DBG_TAG{S8 Record[72];U32 uMemAddr ;struct_MEM_DBG_TAG*pNext ;}T_MEM_DBG_CTRL ;#define MAX_DBG_CTRL 2400//可根据需要调整大小T_MEM_DBG_CTRL g_mem_dbg_ctrl[MAX_DBG_CTRL] = {0}
T_MEM_DBG_CTRL*p_mem_dbg_active = NULL ;T_MEM_DBG_CTRL*p_mem_dbg_free 二 NULL ;U32 g_mem_dbg_init_flag = FALSE ;/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺*mem_dbg_init_initial record group when start^DESCRIPTION -**Input 氺Output 氺Returns *氺modification history氺--------------------氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺Ivoid mem_dbg_init (void){U32 ulndex = 0 ;for(ulndex = 0 ;ulndex < MAX_DBG_CTRL_1 ;ulndex++){g_mem_dbg_ctrl[ulndex] · pNext = &g_mem_dbg_ctrl[ulndex+l];}g_mem_dbg_ctrl [MAX_DBG_CTRL_1] · pNext = NULL ;p_mem_dbg_free = &g_mem_dbg_ctrl
;p_mem_db g_ac t i νe = NULL ;}/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺*mem_dbg_addr_record-record the addr when malloc buffer^DESCRIPTION -*氺Input 氺Output :氺Returns *氺modification history氺--------------------氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺Ivoid mem—dbg_addr_record(void*pAddr, unsigned int bytes, char*fn,
unsigned int In)
{
权利要求
1.一种移动终端,其特征在于,其包括一命令解析模块,用于接收并且分析PC发送过来的数据然后执行对应的操作,对各模块进行测试;一内存记录模块,用于记录分配内存的地址、函数名和行数,及释放内存的时候删除该记录;一数据分析模块,用于打印并分析未被释放的内存信息。
2.如权利要求1所述的移动终端,其特征在于,打印信息中只出现一次的是属于被测试模块一次性分配的数据,不属于泄漏;打印信息中重复多次出现的数据,则为内存泄漏。
3.如权利要求1所述的移动终端,其特征在于,该移动终端为移动通信终端或带界面操作的嵌入式设备。
4.一种如权利要求1所述移动终端的内存泄露检测方法,其特征在于,其包括如下步骤S1、使移动终端的被测试模块处于初始入口状态,在PC端发送启动内存检测命令,移动终端启动内存记录模块;S1&、手动操作进入移动终端的被检测模块,对该被检测模块进行各项功能操作,然后回到初始入口状态;S3、重复步骤S2,此时的操作包含步骤&中的操作,同时也可以进行更多的操作,再次返回初始入口状态;、、在PC端发送停止内存检测命令,同时接收移动终端发送来的内存分配信息数据。
5.如权利要求4所述的内存泄露检测方法,其特征在于,打印信息中只出现一次的是属于被测试模块一次性分配的数据,不属于泄漏;打印信息中重复多次出现的数据,则为内存泄漏。
6.如权利要求4所述的内存泄露检测方法,其特征在于,步骤&中的对被测试模块的各项功能操作包括反复开启关闭该模块,使用该模块的某些功能以及并发运行其他模块。
7.如权利要求4所述的内存泄露检测方法,其特征在于,在步骤S1-S3中初始入口状态保持一致,即移动终端的显示界面、开启的应用、硬件外设和工作状态均保持一致。
全文摘要
本发明公开了一种移动终端及其内存泄露检测方法,其包括一命令解析模块,用于接收并且分析pc发送过来的数据然后执行对应的操作,对各模块进行测试;一内存记录模块,用于记录分配内存的地址、函数名和行数,及释放内存的时候删除该记录;一数据分析模块,用于打印并分析未被释放的内存信息。本发明内存泄露检测方法可以提高检测的速度,精确度。具有很强的可操作性,甚至可以作为移动终端的一个常驻模块,由测试人员来操作发现问题。采用本发明的方法,可以很全面的检测手机系统具体模块的内存泄漏,覆盖更多的测试路径,使内存泄露检查全面、快速。
文档编号G06F11/36GK102262582SQ20101018398
公开日2011年11月30日 申请日期2010年5月25日 优先权日2010年5月25日
发明者杨雄伟 申请人:芯讯通无线科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1