本发明专利技术公开了一种支持故障注入的确定性重放功能的实现方法。该方法通过记录快照日志文件、发送日志文件、接收日志文件和中断日志文件,实现了支持故障注入的确定性重放功能。该方法不仅能够重现整个系统的运行过程,还能更改软件执行流程,使之覆盖到更多的代码,同时,通过恢复到快照日志记录的模拟器运行状态,软件调试人员能够大大降低运行到注入点的时间,极大地提高了软件调试与测试的效率。
【技术实现步骤摘要】
本专利技术涉及一种确定性重放功能的实现方法,尤其涉及一种支持故障注入的确定性重放功能的实现方法。
技术介绍
随着软件规模越来越大,软件的并发性与不确定性越来越强,软件的调试和故障诊断越来越困难。确定性重现技术能够使难以重现的错误得以重现,从而帮助软件开发人员更好更简单地调试程序,提高程序开发效率。而现有的确定性重现技术还不支持故障注入,使确定性重放支持故障注入能够让软件开发人员不仅可以重现执行过程,而且还能对程序状态进行修改,使程序进入新的执行流程,使软件测试覆盖更多的运行分支,增强软件的鲁棒性。而且,现有的故障注入不支持快照日志记录。支持故障注入的确定性重放通过恢复到快照日志记录的模拟器运行状态,减少到达注入点的运行时间,提高软件调试和测试的效率。
技术实现思路
本专利技术的目的在于针对现有技术的不足,提供一种支持故障注入的确定性重放功能的实现方法。本专利技术的目的是通过以下技术方案来实现的,一种支持故障注入的确定性重放功能的实现方法,包括以下步骤:(1)模拟运行被测程序,当接收外设发送的数据,将接收的外设数据记录到接收日志文件;当向外设发送数据,将向外设发送的数据记录到发送日志文件;若发生中断事件,则记录到中断日志文件,并定时将模拟器状态保存到快照日志文件。(2)确定性重放系统开始运行,通过读取快照日志文件恢复模拟器内核到相应的运行状态。(3)若选择重放,则对以前的执行流程进行重放,跳转到步骤4,若选择进行故障注入,则跳转到步骤6。(4)打开相应的接收日志文件与中断日志文件。(5)模拟器内核运行,并判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。(6)确定性重放建立与外设的通信机制,确定性重放根据接收日志文件与发送日志文件里的记录与外设进程进行通信,调整外设进程到与模拟器匹配的状态。(7)模拟器内核运行,当到达注入点时进行故障注入,并建立新的快照日志文件、接受日志文件、发送日志文件和中断日志文件,然后判断运行是否结束,如果运行结束则跳转到步骤8,否则循环执行该步骤。(8)关闭各日志文件,结束程序的运行。进一步地,所述步骤5具体为:模拟器内核运行,当接收外设数据时,则从接收日志文件中读取。同时根据中断日志文件里的记录来触发相应的中断事件。判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。进一步地,所述步骤7具体为:模拟器内核运行,当到达注入点时进行故障注入,确定性重放记录此时内核运行状态到新的快照日志文件;与外设进程进行通信,将接收的外设数据记录到新的接收日志文件,向外设发送的数据记录到新的发送日志文件;若发生中断事件,则记录到新的中断日志文件。然后判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。本专利技术的有益效果是:本专利技术通过将故障注入和确定性重放技术结合,使确定性重放支持故障注入。支持故障注入的确定性重现技术不仅能够重现整个系统的运行过程,还能调整系统的执行流程,使之覆盖到更多的代码,同时,通过恢复到快照日志记录的模拟器运行状态,软件调试人员能够大大降低运行到注入点的时间,极大地提高了软件调试与测试的效率。附图说明图1是系统不进行故障注入的执行流程示意图。图2是系统进行故障注入的执行流程示意图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步详细说明。本专利技术提供的一种支持故障注入的确定性重放功能的实现方法,包括以下步骤:(1)模拟运行被测程序,当接收外设发送的数据,将接收的外设数据记录到接收日志文件;当向外设发送数据,将向外设发送的数据记录到发送日志文件;若发生中断事件,则记录到中断日志文件,并定时将模拟器状态保存到快照日志文件。(2)确定性重放系统开始运行,通过读取快照日志文件恢复模拟器内核到相应的运行状态。(3)若选择重放,则对以前的执行流程进行重放,跳转到步骤4,若选择进行故障注入,则跳转到步骤6。(4)打开相应的接收日志文件与中断日志文件。(5)模拟器内核运行,并判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。具体为:模拟器内核运行,当接收外设数据时,则从接收日志文件中读取;同时根据中断日志文件里的记录来触发相应的中断事件;判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。(6)确定性重放建立与外设的通信机制,确定性重放根据接收日志文件与发送日志文件里的记录与外设进程进行通信,调整外设进程到与模拟器匹配的状态。(7)模拟器内核运行,当到达注入点时进行故障注入,并建立新的快照日志文件、接受日志文件、发送日志文件和中断日志文件,然后判断运行是否结束,如果运行结束则跳转到步骤8,否则循环执行该步骤。具体为:模拟器内核运行,当到达注入点时进行故障注入,确定性重放记录此时内核运行状态到新的快照日志文件;与外设进程进行通信,将接收的外设数据记录到新的接收日志文件,向外设发送的数据记录到新的发送日志文件;若发生中断事件,则记录到新的中断日志文件;然后判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。(8)关闭各日志文件,结束程序的运行。以下通过实施例对本
技术实现思路
做进一步解释。图1是系统不进行故障注入的执行流程示意图。重放系统开始运行之后,从快照日志文件读取最近的检查点,恢复模拟器的运行状态。打开接收日志文件和中断日志文件,模拟器开始运行,当有接收外设发送的数据时,从接收日志文件中读取数据,并且读取中断日志文件,如果有中断发生,触发相应的中断事件。运行结束时,关闭各日志文件,退出运行。图2是系统进行故障注入的执行流程示意图。重放系统开始运行之后,从快照日志文件读取最近的检查点,恢复模拟器的运行状态。并与外设进行通信,调整外设的状态与模拟器匹配。模拟器开始运行,当到达注入点时,对可注入对象进行故障注入,并将此时的模拟器状态保存至新的快照日志文件。当有接收外设发送的数据时,将接收的数据写入新的接收日志文件,有向外设发送数据时,将发送的数据写入新的发送日志文件,如果有中断发生,记录中断事件至新的中断日志文件。运行结束时,关闭各日志文件,退出运行。本文档来自技高网...
【技术保护点】
一种支持故障注入的确定性重放功能的实现方法,其特征在于,包括以下步骤:(1)模拟运行被测程序,当接收外设发送的数据,将接收的外设数据记录到接收日志文件;当向外设发送数据,将向外设发送的数据记录到发送日志文件;若发生中断事件,则记录到中断日志文件,并定时将模拟器状态保存到快照日志文件。(2)确定性重放系统开始运行,通过读取快照日志文件恢复模拟器内核到相应的运行状态。(3)若选择重放,则对以前的执行流程进行重放,跳转到步骤4,若选择进行故障注入,则跳转到步骤6。(4)打开相应的接收日志文件与中断日志文件。(5)模拟器内核运行,并判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。(6)确定性重放建立与外设的通信机制,确定性重放根据接收日志文件与发送日志文件里的记录与外设进程进行通信,调整外设进程到与模拟器匹配的状态。(7)模拟器内核运行,当到达注入点时进行故障注入,并建立新的快照日志文件、接受日志文件、发送日志文件和中断日志文件,然后判断运行是否结束,如果运行结束则跳转到步骤8,否则循环执行该步骤。(8)关闭各日志文件,结束程序的运行。
【技术特征摘要】
1.一种支持故障注入的确定性重放功能的实现方法,其特征在于,包括以下步骤:(1)模拟运行被测程序,当接收外设发送的数据,将接收的外设数据记录到接收日志文件;当向外设发送数据,将向外设发送的数据记录到发送日志文件;若发生中断事件,则记录到中断日志文件,并定时将模拟器状态保存到快照日志文件。(2)确定性重放系统开始运行,通过读取快照日志文件恢复模拟器内核到相应的运行状态。(3)若选择重放,则对以前的执行流程进行重放,跳转到步骤4,若选择进行故障注入,则跳转到步骤6。(4)打开相应的接收日志文件与中断日志文件。(5)模拟器内核运行,并判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。(6)确定性重放建立与外设的通信机制,确定性重放根据接收日志文件与发送日志文件里的记录与外设进程进行通信,调整外设进程到与模拟器匹配的状态。(7)模拟器内核运行,当到达注入点时进行故障注入,并建立新的快照日志文件、...
【专利技术属性】
技术研发人员:高进,卢建鹏,蔡铭,
申请(专利权)人:浙江大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。