嵌入式软件中错误的自动重现与分析
1. 多级监控概念
在嵌入式软件的错误分析中,多级回溯(MLBack)监控和多级步骤(MLStep)监控是重要的方法。通过这些方法,可以监控局部变量和方法参数变量的值。
MLBack会生成一个包含异常的方法列表 suspectmethd
。例如在Navit示例中, update
和 vehi.
方法会被监控,但不会深入到其侧步骤(如 route
和 set
)。这样可以避免对与当前考虑的错误无关但操作量很大的路由计算进行监控。同时, draw
方法也不会被监控,因为它只在相似运行中出现,而在失败运行中不出现,无法进行比较。在 vehi.
方法中执行 angle += 360
计算后,可以检测到变量值的第一个异常。
MLStep监控概念以 suspectmethd
列表作为输入,在额外的重放中对这些方法及其调用的侧步骤进行监控。同样,只在相似运行或失败运行中执行的方法仍不被监控。在Navit示例中,会进行第三次重放,额外监控可疑方法的侧步骤,如 vehi.
方法会连同其侧步骤(如 set
方法)一起被监控。
2. 监控的实现
2.1 单步监控
单步监控通过逐行执行源代码来监控运行中的变量值。以Navit示例(考虑GPS处理)为例,其实现如下:
<