Vxworks 5.x版本是国内客户的最主流版本,这个版本中所有的vxworks任务和vxworks内核都运行在一个内存空间(如kseg0或者kuseg)。这种情况下,任务间内存非法访问问题是很难定位解决的。
考虑一种典型情形:系统中存在任务A和任务B,任务A非法修改任务B的内存数据结构(或者是代码段),任务B将发生异常。在这种情况下,任务B的程序逻辑并没有错误。要调试定位出任务A的软件bug是比较困难的。
针对这类问题,主流CPU体系结构(x86,mips,powerpc,arm)一般都提供数据断点功能,但仅仅是硬件体系结构支持,还不能有效调试非法内存修改问题。比如说在vxworks中,我们装入一个mips watchpoint异常处理程序,当访问到特定内存地址后,就发生一次watchpoint异常。这种简单处理实际上是无法调试此类bug的。因为正常任务B的正常程序流程会访问这个内存地址。如果此时发生异常使得程序终止执行,是无法最终复现bug并定位解决的。
- 添加新评论
- 阅读次数:





