分类:
2008-10-15 16:44:56
前言
众所周知,实时系统中的一些随机软件故障会导致系统的崩溃。这些随机故障通常是由非法的内存访问、包括“CPU饥饿”在内的各种死锁、以及诸如堆栈溢出、数组越界和内存泄漏等内存问题引起的。由于故障的随机性,它们难以复现和检测。
传统的调试工具(如主机-代理调试器、JTAG等)在遇到这类问题时有着不可避免的局限性:用户只能看到目标机上的少量内存段;只能用在开发阶段;用户必须在故障发生之前的很长时间内就要决定在哪里停止程序的运行以及要检测哪些信息,这正是难以定位故障的主要原因。
针对上述问题,RTBF(Real-Time Bug Free)公司提出了具有针对性的SMA(Smart Memory Analyzer)工具。RTBF是世界上首家成功地把实时系统的完整内存映像自动转换为可读信息的公司。SMA采用事后分析(post-mortem)技术对由工具在故障发生时“冻结”的内存映像进行分析。原始的内存映像是不可读的二进制数据,经SMA分析后便呈现为具有良好结构和可读性的形式。SMA记录了内存映像被保存时的系统总体状态,包括任务、信号量、消息队列、变量、内存分配、通讯缓冲、……。这些信息可以帮助开发人员定位排查随机故障,系统工程师也由此可以更详细地观察系统状态。而且,SMA创建了快速有效的环形缓冲日志,允许对系统运行时的变量进行跟踪。目前,SMA支持VxWorks.
检测功能
适用的处理器包括:x86、、MIPS以及Power PC
适用的编译器包括:GNU、DIAB
主机平台:所有版本的
显示包括类型定义、结构、联合、向量和枚举在内的所有变量
显示所有任务的状态
显示看门狗:记录内存映像创建时所有还未被处理的时间相关事件
显示信号量:三种(二进制、互斥、计数)信号量及其状态和拥有者
消息队列:队列号、队列中最大消息数、单条消息的最大容量、空闲消息的数量、收发消息失败的延时
显示所有空闲内存区域、观察分配的内存块、观察内存分配的丢失情况(内存泄漏)
显示所有文件描述符和套接字
显示SNMP树
搜集所有错误与警告
显示环形缓冲的状态
显示网络缓冲的状态
计算由任务占据的CPU负载
自动检查大量的常用编程错误,并在需要时给出警告:
对复制的声明(不同类型带有相同的名字)给出警告;
只读区域在运行中被改写时给出警告;
如中断向量表之类的特殊内存区域在运行时如果被偶然改写,也给出警告
[1]