[发明专利]一种软单步系统中内存读写监控方法有效
申请号: | 201310248057.9 | 申请日: | 2013-06-20 |
公开(公告)号: | CN104239201B | 公开(公告)日: | 2018-08-24 |
发明(设计)人: | 汪革;苟利平;王仁雷;武琦 | 申请(专利权)人: | 上海博达数据通信有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海天翔知识产权代理有限公司 31224 | 代理人: | 刘粉宝 |
地址: | 201203 上海市浦*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软单步 系统 内存 读写 监控 方法 | ||
本发明公开了一种软单步系统中内存读写监控方法,该方法通过CPU的观察点机制、断点机制及先进的补丁技术实现了全新的内存监控技术,适用于多(单)任务嵌入式系统的在线调试。本发明提供的软单步机制能有效解决没有硬单步机制的多任务系统进行在线内存监控。
技术领域
本发明涉及软件系统技术,具体涉及软件系统中内存监控技术。
背景技术
现有的内存监控技术(比如著名的GDB)是通过观察点机制,指定一个任务要监控的内存区间,当检测到该任务读/写这段地址时,该任务不会读/写这段地址而是立刻进入异常,等待用户解析后删除该观察点任务才能继续运行。
这种方法对于调试单任务的系统是比较有效的,但存在以下几个缺点:
1.当要检测的内存频繁被读/写,而程序员只关心满足一定规则的内存操作时,GDB并不能很好的定义及判断所有规则,可能会使调试中的程序频繁的进入观察点异常,很多时候程序员并不关心这些异常。
2.在多任务系统中,任务间可能存在复杂的关联,当一个任务因为监控内存而进入异常,可能会影响其他任务的运行,从而影响整个系统的正常运行,当这种异常程序员不关心时,程序员不得不重新启动系统调试。
综上所述,内存监控技术所存在的这些缺点将会极大的影响多任务嵌入式系统软件的调试进度。
发明内容
本发明针对现有内存监控技术所存在的问题,而提供一种全新的软单步系统中内存读写监控方法。监控方案通过CPU的观察点机制、断点机制及先进的补丁技术实现了全新的内存监控技术,有效解决现有内存监控技术所存在的缺陷,并适用于多(单)任务嵌入式系统的在线调试。
为了达到上述目的,本发明采用如下的技术方案:
一种软单步系统中内存读写监控方法,所述监控方法包括如下步骤:
(1)操作系统初始化后,内存读写监控前挂载观察点异常处理函数、断点异常处理函数及任务切换钩子函数;
(2)设置要监控的内存区间,并设置内存观察点包含要监控的内存区间;
(3)系统正常运行中,如果发生观察点异常则跳到步骤(4)、如果发生断点异常则跳到步骤(14),如果发生任务切换则跳到步骤(13);
(4)系统读写被监控的内存会产生观察点异常,并自动跳到观察点异常处理函数进行后续步骤处理;
(5)分析导致观察点异常的指令得到内存访问的各种参数,包括异常地址、内存访问的方式、地址、长度、数值;
(6)匹配要监控的内存区间,如果不匹配则跳到步骤(12);
(7)匹配注册规则及补丁规则,如果不匹配则跳到步骤(12);
(8)分析任务堆栈得到的任务调用关系,并记录内存访问信息;
(9)计算下一个PC地址为软单步断点地址;
(10)以当前任务为索引在HASH表中记录切换信息;
(11)清除观察点,设置软单步断点;
(12)异常返回,跳到步骤(3)程序正常运行;
(13)发生任务切换,且任务切换后新旧任务不一致,则先索引上个任务获得切换信息,根据切换信息清除上个任务的软单步断点并恢复观察点,再索引新任务获得切换信息,根据切换信息设置新任务的观察点及软单步断点,处理完后跳到步骤(3)程序正常运行;
(14)系统产生软单步断点异常,并自动跳到断点异常处理函数进行后续步骤处理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海博达数据通信有限公司,未经上海博达数据通信有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310248057.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:文章新章节的检测方法及装置
- 下一篇:多语言信息分类处理方法及其处理系统