CN106681911A - 一种支持故障注入的确定性重放功能的实现方法 - Google Patents
一种支持故障注入的确定性重放功能的实现方法 Download PDFInfo
- Publication number
- CN106681911A CN106681911A CN201611122244.2A CN201611122244A CN106681911A CN 106681911 A CN106681911 A CN 106681911A CN 201611122244 A CN201611122244 A CN 201611122244A CN 106681911 A CN106681911 A CN 106681911A
- Authority
- CN
- China
- Prior art keywords
- journal file
- definitiveness
- peripheral hardware
- recorded
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种支持故障注入的确定性重放功能的实现方法。该方法通过记录快照日志文件、发送日志文件、接收日志文件和中断日志文件,实现了支持故障注入的确定性重放功能。该方法不仅能够重现整个系统的运行过程,还能更改软件执行流程,使之覆盖到更多的代码,同时,通过恢复到快照日志记录的模拟器运行状态,软件调试人员能够大大降低运行到注入点的时间,极大地提高了软件调试与测试的效率。
Description
技术领域
本发明涉及一种确定性重放功能的实现方法,尤其涉及一种支持故障注入的确定性重放功能的实现方法。
背景技术
随着软件规模越来越大,软件的并发性与不确定性越来越强,软件的调试和故障诊断越来越困难。确定性重现技术能够使难以重现的错误得以重现,从而帮助软件开发人员更好更简单地调试程序,提高程序开发效率。而现有的确定性重现技术还不支持故障注入,使确定性重放支持故障注入能够让软件开发人员不仅可以重现执行过程,而且还能对程序状态进行修改,使程序进入新的执行流程,使软件测试覆盖更多的运行分支,增强软件的鲁棒性。而且,现有的故障注入不支持快照日志记录。支持故障注入的确定性重放通过恢复到快照日志记录的模拟器运行状态,减少到达注入点的运行时间,提高软件调试和测试的效率。
发明内容
本发明的目的在于针对现有技术的不足,提供一种支持故障注入的确定性重放功能的实现方法。
本发明的目的是通过以下技术方案来实现的,一种支持故障注入的确定性重放功能的实现方法,包括以下步骤:
(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是系统进行故障注入的执行流程示意图。重放系统开始运行之后,从快照日志文件读取最近的检查点,恢复模拟器的运行状态。并与外设进行通信,调整外设的状态与模拟器匹配。模拟器开始运行,当到达注入点时,对可注入对象进行故障注入,并将此时的模拟器状态保存至新的快照日志文件。当有接收外设发送的数据时,将接收的数据写入新的接收日志文件,有向外设发送数据时,将发送的数据写入新的发送日志文件,如果有中断发生,记录中断事件至新的中断日志文件。运行结束时,关闭各日志文件,退出运行。
Claims (3)
1.一种支持故障注入的确定性重放功能的实现方法,其特征在于,包括以下步骤:
(1)模拟运行被测程序,当接收外设发送的数据,将接收的外设数据记录到接收日志文件;当向外设发送数据,将向外设发送的数据记录到发送日志文件;若发生中断事件,则记录到中断日志文件,并定时将模拟器状态保存到快照日志文件。
(2)确定性重放系统开始运行,通过读取快照日志文件恢复模拟器内核到相应的运行状态。
(3)若选择重放,则对以前的执行流程进行重放,跳转到步骤4,若选择进行故障注入,则跳转到步骤6。
(4)打开相应的接收日志文件与中断日志文件。
(5)模拟器内核运行,并判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。
(6)确定性重放建立与外设的通信机制,确定性重放根据接收日志文件与发送日志文件里的记录与外设进程进行通信,调整外设进程到与模拟器匹配的状态。
(7)模拟器内核运行,当到达注入点时进行故障注入,并建立新的快照日志文件、接受日志文件、发送日志文件和中断日志文件,然后判断运行是否结束,如果运行结束则跳转到步骤8,否则循环执行该步骤。
(8)关闭各日志文件,结束程序的运行。
2.根据权利要求1所述的支持故障注入的确定性重放功能的实现方法,其特征是,所述步骤5具体为:模拟器内核运行,当接收外设数据时,则从接收日志文件中读取。同时根据中断日志文件里的记录来触发相应的中断事件。判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。
3.根据权利要求1所述的支持故障注入的确定性重放功能的实现方法,其特征是,所述步骤7具体为:模拟器内核运行,当到达注入点时进行故障注入,确定性重放记录此时内核运行状态到新的快照日志文件;与外设进程进行通信,将接收的外设数据记录到新的接收日志文件,向外设发送的数据记录到新的发送日志文件;若发生中断事件,则记录到新的中断日志文件。然后判断运行是否结束,如果运行结束则跳转到步骤7,否则循环执行该步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611122244.2A CN106681911B (zh) | 2016-12-08 | 2016-12-08 | 一种支持故障注入的确定性重放功能的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611122244.2A CN106681911B (zh) | 2016-12-08 | 2016-12-08 | 一种支持故障注入的确定性重放功能的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106681911A true CN106681911A (zh) | 2017-05-17 |
CN106681911B CN106681911B (zh) | 2019-05-14 |
Family
ID=58868539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611122244.2A Expired - Fee Related CN106681911B (zh) | 2016-12-08 | 2016-12-08 | 一种支持故障注入的确定性重放功能的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106681911B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108923957A (zh) * | 2018-06-14 | 2018-11-30 | 深圳深宝电器仪表有限公司 | 一种配网终端dtu故障排除的方法、装置和终端设备 |
CN112084117A (zh) * | 2020-09-27 | 2020-12-15 | 网易(杭州)网络有限公司 | 一种测试方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270166A (zh) * | 2011-02-22 | 2011-12-07 | 清华大学 | 基于模拟器的处理器故障注入及跟踪方法及模拟器 |
US20120096441A1 (en) * | 2005-10-21 | 2012-04-19 | Gregory Edward Warwick Law | System and method for debugging of computer programs |
CN102591763A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种基于确定性重放的处理器整体故障检测系统与方法 |
CN104657239A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于分离式日志的多核处理器瞬时故障恢复系统及其瞬时故障恢复方法 |
-
2016
- 2016-12-08 CN CN201611122244.2A patent/CN106681911B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120096441A1 (en) * | 2005-10-21 | 2012-04-19 | Gregory Edward Warwick Law | System and method for debugging of computer programs |
CN102270166A (zh) * | 2011-02-22 | 2011-12-07 | 清华大学 | 基于模拟器的处理器故障注入及跟踪方法及模拟器 |
CN102591763A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种基于确定性重放的处理器整体故障检测系统与方法 |
CN104657239A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于分离式日志的多核处理器瞬时故障恢复系统及其瞬时故障恢复方法 |
Non-Patent Citations (1)
Title |
---|
高岚: "多核处理器并行程序的确定性重放研究", 《软件学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108923957A (zh) * | 2018-06-14 | 2018-11-30 | 深圳深宝电器仪表有限公司 | 一种配网终端dtu故障排除的方法、装置和终端设备 |
CN108923957B (zh) * | 2018-06-14 | 2021-07-06 | 深圳深宝电器仪表有限公司 | 一种配网终端dtu故障排除的方法、装置和终端设备 |
CN112084117A (zh) * | 2020-09-27 | 2020-12-15 | 网易(杭州)网络有限公司 | 一种测试方法和装置 |
CN112084117B (zh) * | 2020-09-27 | 2023-08-08 | 网易(杭州)网络有限公司 | 一种测试方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106681911B (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101976217B (zh) | 网络处理器异常检测方法及系统 | |
CN102760090B (zh) | 除错方法及计算机系统 | |
CN102346235A (zh) | 一种面向硬件设备功能的自动测试系统及方法 | |
WO2017124808A1 (zh) | 一种故障信息的重现方法和重现装置 | |
CN101339581B (zh) | 基于中断通讯的嵌入式系统的在线调试仿真方法 | |
CN102981957B (zh) | 虚断点脚本调试方法 | |
CN105959802A (zh) | 智能电视故障信息收集方法及装置 | |
CN103744764A (zh) | 一种基于Crontab的整机内存稳定性的测试方法 | |
CN106537351B (zh) | 用于诊断无线通信设备中的电源故障的方法 | |
CN107992407A (zh) | 使用u盘对安卓终端设备调试的系统及方法 | |
CN108762886B (zh) | 虚拟机的故障检测恢复方法及系统 | |
CN104714863A (zh) | 一种基于Linux操作系统的系统宕机后Raid卡日志完整保存的方法 | |
CN105159719A (zh) | 一种主备用基本输入输出系统的启动方法及装置 | |
CN106201896A (zh) | 一种嵌入式环境下基于检查点的调试方法、系统及装置 | |
CN104461521A (zh) | 一种应用程序重放方法及系统 | |
CN108009067A (zh) | 一种在服务器下查看raid卡详细信息的方法及系统 | |
CN106681911A (zh) | 一种支持故障注入的确定性重放功能的实现方法 | |
CN104615523A (zh) | 一种基于ipmi协议的bmc管理模块疲劳测试方法 | |
CN102591760A (zh) | 基于长短扫描链与jtag接口的片上调试电路 | |
CN108021791A (zh) | 数据保护方法及装置 | |
CN104750537A (zh) | 一种执行测试用例的方法和装置 | |
CN102662787A (zh) | 一种保护系统盘raid的方法 | |
CN107315607A (zh) | 一种驱动自适应加载系统 | |
Xu et al. | SATURN: Host-gadget synergistic USB driver fuzzing | |
CN104778107A (zh) | 希捷硬盘固件故障状态忙的修复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190514 Termination date: 20191208 |
|
CF01 | Termination of patent right due to non-payment of annual fee |