一种查找改写内存的任务的方法和系统技术方案

技术编号:3869389 阅读:172 留言:0更新日期:2012-04-11 18:40
一种查找改写内存的任务的方法,其特征在于,包括: 步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存; 步骤2、赋值模块给所述待测内存里的内容赋一校验字; 步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值; 步骤4、查找模块判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,执行步骤1。

【技术实现步骤摘要】

本专利技术涉及了通信产品在市场应用或实验室环境中定位非法改写内存的一 种手段,特别涉及一种查找改写内存的任务的方法和系统
技术介绍
在通信领域中,产品在市场应用或实验室环境中会遇到由于内存被非法改写 导致系统功能异常甚至死机了。如果是定位野指针随机改写不固定的内存就更加 困难了,在通信领域中野指针改写内存的问题是个难题, 一般没有系统性的方法 定位,通常情况下是靠不停的复现问题,然后分析流程,再不停的加入调试手段 来一步一步分析和定位。
技术实现思路
本专利技术所要解决的技术问题是,提供一种査找改写内存的任务的方法和系 统,从而为定位系统故障提供有效的记录信息以便于定位系统问题,提高产品在 市场中的稳定性。本专利技术提出了一种查找改写内存的任务的方法,包括步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存; 步骤2、赋值模块给所述待测内存里的内容赋一校验字;步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任 务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果 不相同,则记录当前任务标识,并更改标志位的初值;步骤4、查找模块判断所述任务切换钩子模块的标志位的初值是否被更改, 是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放 所述待测内存和辅助内存,执行步骤l。当所述分配模块需要重新分配辅助内存和待测内存时,所述步骤1中预定的 分配策略是,每次分配给所述辅助内存的内存容量都比上一次分配的多,或每次 分配给所述辅助内存的内存容量都比上一次分配的少,或者是随机分配的;每次 分配给所述待测内存的内存容量固定。所述步骤1中分配的所述辅助内存和待测内存的地址相邻。所述步骤2中的校验字是一个固定数值。另,本专利技术还提出了一种查找改写内存的任务的系统,包括 分配模块,用于初始化时或根据接收到的分配消息,依次分配一辅助内存和 一待测内存;赋值模块,用于给所述待测内存里的内容赋一校验字;任务切换钩子模块,用于监测所述待测内存的内容是否被改写,在当前任务 向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不 相同,则记录当前任务标识,并更改标志位的初值;査找模块,用于判断所述任务切换钩子模块的标志位的初值是否被更改,是 则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所 述待测内存和辅助内存,发送所述分配消息给所述分配模块。所述系统还包括分配模式存储模块,所述分配模式存储模块,用于存储第一 分配模式,即每次分配给所述辅助内存的内存容量都比上一次分配的多,每次分 配给所述待测内存的内存容量固定,或用于存储第二分配模式,即每次分配给所 述辅助内存的内存容量都比上一次分配的少,每次分配给所述待测内存的内存容 量固定,或用于存储第三分配模式,即随机分配给所述辅助内存的内存容量,每 次分配给所述待测内存的内存容量固定。所述分配模式存储模块存储了所述三种分配模式中的任一种分配模式,所述 分配模块根据所述分配模式存储模块中的所述分配模式,分配一辅助内存和一待 测内存。基于上述技术方案,本专利技术通过动态的分配待测内存,检测待测内存内容是 否被改写,定位改写所述待测内存的任务,从而捕获野指针,提高了产品在市场 中的稳定性。附图说明图1是本专利技术查找改写内存的任务的方法流程图。 图2是本专利技术查找改写内存的任务的系统框图。具体实施例方式下面结合附图和具体实施例对本专利技术的技术方案作详细说明。图1是本专利技术査找改写内存的任务的方法流程图,该方法包括5步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存; 当所述分配模块需要重新分配辅助内存和待测内存时,所述歩骤1中预定的分配策略是,每次分配给所述辅助内存的内存容量都比上一次分配的多,或每次分配给所述辅助内存的内存容量都比上一次分配的少,或者是随机分配的;每次分配给所述待测内存的内存容量固定。分配待测内存是有一定策略的,原则上就是要待测内存在内存中的位置不停的变化并且有一定的随机性,利用这种策略让野指针改写待测内存,从而捕获住野指针改写内存的任务。例如可以采取如下策略(1) 按照内容容量从少到多的顺序分配一块辅助内存,紧接着辅助内存的 地址之后分配一块内存容量固定的待测内存-如按照内容容量64、 128、 256、 512、 1K、 2K、 4K、…、256M、 512M、 1G的顺序分配一块辅助内存,然后分配用于检测的2K容量的待测内存;(2) 按照内容容量从多到少的顺序分配一块辅助内存,紧接着辅助内存的 地址之前分配一块内存容量固定的待测内存-如按照内容容量1G、 512M、 256M、…、2K、 1K、 512、 256、 128、 64的顺 序分配一块辅助内存,然后分配用于检测的2K容量的待测内存;(3) 在系统允许的大小下,随机大小分配一块辅助内存,然后分配用于检测的2K容量的待测内存;当然还有其它方法,但原则上一定不要影响系统功能的运行和降低系统运行效率。步骤2、赋值模块给所述待测内存里的内容赋一校验字;为了方便校验,这个校验字的每一位与相邻位的值最好不同,从而易于发现 待测内存是否被改写,例如可以是0xa5。因为待测内存可能需要不断分配,每次赋给待测内存的校验字可以是同一个 数值,也可以是不同的数值,只要能够校验待测内存是否被改写,所有数值均在 本专利技术的保护范围内。步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任 务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果 不相同,则记录当前任务标识,并更改标志位的初值;任务切换钩子模块会在当前任务向下一个任务发生切换时检测所述待测内 存的内容是否被改写,检测的方法是判断所述待测内存的内容是否与所述校验字相同,如果不相同,则所述待测内存的内容被改写,即可获知改写该待测内存 的任务是当前任务,当前任务中包括野指针,只要找到修改待测内存的任务便可 找到野指针,记录当前任务标识,并更改标志位的初值。任务标识包括任务名和 任务地址,该标志位初始值为0,如果待测内存被改写,则标志位置为l。利用任务切换钩子模块判断待测内存是否被改写了,由于任务切换钩子模块 只对随机分配的待测内存做检测,而初始化是在调用不频繁的任务里做的,所以 这样不会因为加入任务切换钩子模块导致系统性能大幅下降,提高了监控的高效 性。步骤4、査找模块判断所述任务切换钩子模块的标志位的初值是否被更改, 是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放 所述待测内存和辅助内存,执行步骤l。如果任务切换钩子模块中的标志位为1,则待测内存的内容被改写,通过所 述任务切换钩子模块查找到改写所述待测内存的任务标识,即发生切换的当前任 务标识,从而可以找到野指针。如果任务切换钩子模块中的标志位为O,则待测内存的内容没被改写,需要 继续查找,所以需要释放所述待测内存和辅助内存,重新分配新的待测内存和辅 助内存,然后再査找,直到找到待测内存内容被修改,找出修改待测内存的任务。图2是本专利技术查找改写内存的任务的系统框图,该系统,包括 分配模块,用于初始化时或根据接收到的分配消息,依次分配一辅助内存和 一待测内存;初始化时先分配辅助内存,然后本文档来自技高网...

【技术保护点】
一种查找改写内存的任务的方法,其特征在于,包括: 步骤1、分配模块依据预定的分配策略依次分配一辅助内存和一待测内存; 步骤2、赋值模块给所述待测内存里的内容赋一校验字; 步骤3、任务切换钩子模块监测所述待测内存的内容是否被改写,在当前任务向下一个任务切换时,判断所述待测内存的内容是否与所述校验字相同,如果不相同,则记录当前任务标识,并更改标志位的初值; 步骤4、查找模块判断所述任务切换钩子模块的标志位的初值是否被更改,是则通过所述任务切换钩子模块查找到改写所述待测内存的任务标识,否则释放所述待测内存和辅助内存,执行步骤1。

【技术特征摘要】

【专利技术属性】
技术研发人员:石江涛
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1