● 摘要
并发程序执行的不确定性使得程序错误很难重现,因此传统的循环调试技术无法直接用于并发程序的调试,执行重放技术应运而生。执行重放技术是指在程序首次或某次执行时记录程序执行信息,然后在程序的下次执行过程中利用这些信息控制程序执行,确保程序的执行与其在记录阶段的执行相一致。目前,国内外已经有一些执行重放技术的研究。但是这些研究主要面向常用操作系统(如Linux、Windows)下程序的重放,还没有可以直接用于VxWorks系统下应用程序的执行重放方法,这成为了VxWroks开发环境下急需解决的一个问题。因此,本文致力于研究VxWorks系统下应用程序的执行重放技术。
本文针对VxWorks操作系统下应用程序重放的需求,设计实现了一种基于现有开发环境的执行重放方法。首先,本文阐述了应用程序执行重放的背景和必要性,对比了近年来国内外对执行重放技术的研究工作,并在此基础上分析了VxWorks上应用程序执行重放的特殊性。其次,本文分析了目标操作系统VxWorks的内部实现机制,为后续执行重放方法的设计和实现奠定了基础。然后本文指出了在VxWorks下重放应用程序存在的事件唯一标识、系统特殊性、离线任务调度等问题,并针对这些问题给出了解决方法。接下来本文给出了基于目标机/宿主机的应用程序执行重放方法。该方法通过在目标机端记录程序执行信息,在宿主机端分析日志信息并控制目标端程序执行来实现应用程序的重放。方法包括三个功能模块:记录模块、日志分析处理模块和重放模块。随后本文使用程序插桩技术和系统提供的调试功能实现了该执行重放方法。最后本文使用该执行重放方法成功实现几个目标程序的重放,验证了该执行重放方法对于几类目标程序的有效性,同时本文对记录阶段探针引入的时间开销进行了测量,测量结果表明插桩的探针对系统的性能造成了一定的影响。
相关内容
相关标签