一种软单步系统中内存读写监控方法技术方案

技术编号:10832314 阅读:108 留言:0更新日期:2014-12-27 17:13
本发明专利技术公开了一种软单步系统中内存读写监控方法,该方法通过CPU的观察点机制、断点机制及先进的补丁技术实现了全新的内存监控技术,适用于多(单)任务嵌入式系统的在线调试。本发明专利技术提供的软单步机制能有效解决没有硬单步机制的多任务系统进行在线内存监控。

【技术实现步骤摘要】

本专利技术涉及软件系统技术,具体涉及软件系统中内存监控技术。
技术介绍
现有的内存监控技术(比如著名的GDB)是通过观察点机制,指定一个任务要监控的内存区间,当检测到该任务读/写这段地址时,该任务不会读/写这段地址而是立刻进入异常,等待用户解析后删除该观察点任务才能继续运行。 这种方法对于调试单任务的系统是比较有效的,但存在以下几个缺点: 1.当要检测的内存频繁被读/写,而程序员只关心满足一定规则的内存操作时,GDB并不能很好的定义及判断所有规则,可能会使调试中的程序频繁的进入观察点异常,很多时候程序员并不关心这些异常。 2.在多任务系统中,任务间可能存在复杂的关联,当一个任务因为监控内存而进入异常,可能会影响其他任务的运行,从而影响整个系统的正常运行,当这种异常程序员不关心时,程序员不得不重新启动系统调试。 综上所述,内存监控技术所存在的这些缺点将会极大的影响多任务嵌入式系统软件的调试进度。
技术实现思路
本专利技术针对现有内存监控技术所存在的问题,而提供一种全新的软单步系统中内存读写监控方法。监控方案通过CPU的观察点机制、断点机制及先进的补丁技术实现了全新的内存监控技术,有效解决现有内存监控技术所存在的缺陷,并适用于多(单)任务嵌入式系统的在线调试。 为了达到上述目的,本专利技术采用如下的技术方案: ,所述监控方法包括如下步骤: (I)操作系统初始化后,内存读写监控前挂载观察点异常处理函数、断点异常处理函数及任务切换钩子函数; (2)设置要监控的内存区间,并设置内存观察点包含要监控的内存区间; (3)系统正常运行中,如果发生观察点异常则跳到步骤(4)、如果发生断点异常则跳到步骤(14),如果发生任务切换则跳到步骤(13); (4)系统读写被监控的内存会产生观察点异常,并自动跳到观察点异常处理函数进行后续步骤处理; (5)分析导致观察点异常的指令得到内存访问的各种参数,包括异常地址、内存访问的方式、地址、长度、数值; (6)匹配要监控的内存区间,如果不匹配则跳到步骤(12); (7)匹配注册规则及补丁规则,如果不匹配则跳到步骤(12); (8)分析任务堆栈得到的任务调用关系,并记录内存访问信息; (9)计算下一个PC地址为软单步断点地址; (10)以当前任务为索引在HASH表中记录切换信息; (11)清除观察点,设置软单步断点; (12)异常返回,跳到步骤(3)程序正常运行; (13)发生任务切换,且任务切换后新旧任务不一致,则先索引上个任务获得切换信息,根据切换信息清除上个任务的软单步断点并恢复观察点,再索引新任务获得切换信息,根据切换信息设置新任务的观察点及软单步断点,处理完后跳到步骤(3)程序正常运行; (14)系统产生软单步断点异常,并自动跳到断点异常处理函数进行后续步骤处理; (15)以当前任务为索引在切换信息的HASH表中查找切换信息,再根据匹配的切换信息清除软单步断点,清除切换信息,恢复观察点配置,异常返回,跳到步骤(3)系统正常运行以便继续监视步骤(2)中设置的内存区间; (16)当不再需要监控内存时,清除所有任务中该观察点切换信息,取消硬单步,清除观察点。 在本专利技术的优选实例中,所述步骤(7)中注册规则是程序中已经注册的规则,补丁规则是通过补丁技术重新实现的规则,注册规则和补丁规则可以根据内存访问的方式、地址、大小、数值及各种全局变量进行组合匹配。 进一步的,所述步骤(8)中记录内存访问信息的方式有两种:第一种以〈任务ID,异常地址 > 为HASH索引统计内存各种访问方式的次数;第二种循环记录任务ID、异常地址、内存访问的方式、地址、长度、数值和计算堆栈得到的任务调用关系。 进一步的,所述步骤(10)中切换信息包括任务ID、断点地址、原断点指令、观察点配置。 本专利技术通过CPU的观察点机制、断点机制及先进的补丁技术实现了全新的内存监控技术,该监控技术适用于多(单)任务嵌入式系统的在线调试,其能够有效提高多任务嵌入式系统软件的调试进度。 同时,本专利技术提供方案能有效解决没有硬单步机制的多任务系统进行在线内存监控。 【附图说明】 [0031 ] 以下结合附图和【具体实施方式】来进一步说明本专利技术。 图1为本专利技术实施的流程图。 【具体实施方式】 为了使本专利技术实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本专利技术。 本实例以MIPS3274K运行VxWorks操作系统为例介绍本专利技术方案具体的实施过程,具体实施步骤如下,参考图1: 1.Vxfforks初始化结束后,用intVecSet挂载IV_WATCH_VEC观察点异常处理函数,用intVecSet挂载IV_BP_VEC断点异常处理函数,用taskSwitchHookAdd挂载任务切换钩子函数; 2.设置要监控的内存区间,通过CPU的WatchHi寄存器设置内存观察点的基址掩码,WatchLo寄存器设置内存观察点基址及访问模式,当访问的内存&基址掩码=基址&基址掩码时产生观察点异常,因此实际设置在观察点的区间可能需要大于要监控的内存区间; 3.系统正常运行中,如果发生观察点异常则跳到步骤(4)、如果发生断点异常则跳到步骤(14),如果发生任务切换则跳到步骤(13); 4.系统读写被监控的内存会产生观察点异常,并进入后续观察点异常处理; 5.依据MIPS3274K指令集分析导致观察点异常的指令得到内存访问的方式、地址、长度、数值等参数;比如对于Ib指令,指令格式为(op RS RT |D),因此访问方式为读,地址是寄存器RS+立即数D,长度为I ;又比如sw指令,指令格式为(op RS RT D),因此访问方式为写,地址是寄存器RS+立即数D,数值是寄存器RT,长度为4 ; 6.计算异常时内存访问区间和要监控的内存区间是否有交集,如果没有交集说明不匹配,则跳到步骤12; 7.匹配注册规则及补丁规则,注册规则是指系统静态编译时已经实现并注册的规贝U,补丁规则是通过补丁技术动态加载的规则,注册规则和补丁规则可以根据内存访问的方式、地址、大小、数值及各种全局变量进行组合匹配,如果不匹配则跳到步骤12 ;比如要监控特定地址被改写为特定的值,可以通过注册规则来实现,当不希望重新编译整个系统时可以通过补丁规则来实现,补丁技术为本领域技术人员熟知技术,不在本专利技术内详述。 8.分析任务堆栈得到的任务调用关系,并记录内存访问信息,这里提供两种记录方式,第一种以〈任务ID,异常地址 > 为HASH索引统计内存各种访问方式的次数,HASH索引的算法是计算任务ID和异常地址的CRC32校验值;第二种循环记录任务ID、异常地址、内存访问的方式、地址、大小、数值和计算堆栈得到的任务调用关系; 9.计算下一个PC地址为软单步断点地址,对于非跳转延时槽指令,下一个PC地址就是当前PC+1 ; 10.以当前任务ID的CRC32校验值为索引在HASH表中记录切换信息,切换信息包括任务ID、断点地址、原断点指令、观察点配置; 11.通过清除WatchH1、WatchLo寄存器清除观察点,通过改写软单本文档来自技高网...

【技术保护点】
一种软单步系统中内存读写监控方法,其特征在于,所述监控方法包括如下步骤:(1)操作系统初始化后,内存读写监控前挂载观察点异常处理函数、断点异常处理函数及任务切换钩子函数;(2)设置要监控的内存区间,并设置内存观察点包含要监控的内存区间;(3)系统正常运行中,如果发生观察点异常则跳到步骤(4)、如果发生断点异常则跳到步骤(14),如果发生任务切换则跳到步骤(13);(4)系统读写被监控的内存会产生观察点异常,并自动跳到观察点异常处理函数进行后续步骤处理;(5)分析导致观察点异常的指令得到内存访问的各种参数,包括异常地址、内存访问的方式、地址、长度、数值;(6)匹配要监控的内存区间,如果不匹配则跳到步骤(12);(7)匹配注册规则及补丁规则,如果不匹配则跳到步骤(12);(8)分析任务堆栈得到的任务调用关系,并记录内存访问信息;(9)计算下一个PC地址为软单步断点地址;(10)以当前任务为索引在HASH表中记录切换信息;(11)清除观察点,设置软单步断点;(12)异常返回,跳到步骤(3)系统正常运行;(13)发生任务切换,且任务切换后新旧任务不一致,则先索引上个任务获得切换信息,根据切换信息清除上个任务的软单步断点并恢复观察点,再索引新任务获得切换信息,根据切换信息设置新任务的观察点及软单步断点,处理完后跳到步骤(3)系统正常运行;(14)系统产生软单步断点异常,并自动跳到断点异常处理函数进行后续步骤处理;(15)以当前任务为索引在切换信息的HASH表中查找切换信息,再根据匹配的切换信息清除软单步断点,清除切换信息,恢复观察点配置,异常返回,跳到步骤(3)系统正常运行以便继续监视步骤(2)中设置的内存区间;(16)当不再需要监控内存时,清除所有任务中该观察点切换信息,取消硬单步,清除观察点。...

【技术特征摘要】
1.一种软单步系统中内存读写监控方法,其特征在于,所述监控方法包括如下步骤: (1)操作系统初始化后,内存读写监控前挂载观察点异常处理函数、断点异常处理函数及任务切换钩子函数; (2)设置要监控的内存区间,并设置内存观察点包含要监控的内存区间; (3)系统正常运行中,如果发生观察点异常则跳到步骤(4)、如果发生断点异常则跳到步骤(14),如果发生任务切换则跳到步骤(13); (4)系统读写被监控的内存会产生观察点异常,并自动跳到观察点异常处理函数进行后续步骤处理; (5)分析导致观察点异常的指令得到内存访问的各种参数,包括异常地址、内存访问的方式、地址、长度、数值; (6)匹配要监控的内存区间,如果不匹配则跳到步骤(12); (7)匹配注册规则及补丁规则,如果不匹配则跳到步骤(12); (8)分析任务堆栈得到的任务调用关系,并记录内存访问信息; (9)计算下一个PC地址为软单步断点地址; (10)以当前任务为索引在HASH表中记录切换信息; (11)清除观察点,设置软单步断点; (12)异常返回,跳到步骤(3)系统正常运行; (13)发生任务切换,且任务切换后新旧任务不一致,则先索引上个任务获得切换信息,根据切换信息清除上个任务的软单步断点并恢复观察点,再索引新任务获得切换信息,根据切换...

【专利技术属性】
技术研发人员:汪革苟利平王仁雷武琦
申请(专利权)人:上海博达数据通信有限公司
类型:发明
国别省市:上海;31

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

1