8、嵌入式软件中错误的自动重现与分析

嵌入式软件中错误的自动重现与分析

1. 理论与算法

在嵌入式软件中,错误的自动重现和分析是一个重要的研究领域。我们的方法主要考虑了两种非确定性输入源:传感器输入和线程调度,而不考虑内存违规问题,因为许多可用的内存分析工具可以轻松检测到这类错误。

1.1 传感器访问的记录与重放

嵌入式软件常常由定时器或中断触发对连接设备的访问,以特定频率请求设备状态。例如,导航软件可能以 10Hz 的频率访问 GPS 传感器。

  • 记录过程 :在软件执行到设备访问完成的位置(定义为 Receive)时暂停执行,将读取的数据写入日志文件。
  • 重放过程 :在中断开始访问设备的位置(定义为 Request)暂停执行,跳过对传感器的访问,跳转到 Receive 位置,从日志文件中读取数据并注入到执行中。

这个过程可以使用调试器工具实现,调试器基于的重放过程可以通过序列图进行说明。

1.2 线程调度的记录与重放

线程调度也是非确定性的一个来源。线程调度的记录与重放基于线程事件和 IO 事件序列的重建。在重放时,触发相同的事件调用序列。

例如,在行人识别软件组件中有两个线程:用于识别图片中行人的 Proc 线程和用于在检测到行人的图片中绘制矩形的 GUI 线程。当两个线程交替执行时,不会出现故障;但当 Proc 线程执行两次时,会出现图片未绘制的问题。

我们的方法实现了活动线程的序列化和在线程操作时随机切换线程。正常的线程调度器被锁定,任何时候只有一个线程处于活动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值