论文部分内容阅读
程序调试是软件开发中一个十分重要的环节,它所消耗的资金一般要超过整个开发成本的一半以上。对于关键安全系统,由于其严格的可靠性和安全性要求,调试显得更为重要。尤其是对于实时嵌入式系统来说,因为它们要和周围的硬件相互作用并频繁使用中断来进行定时和驱动I/O设备。而绝大多数目前已经开发的实时系统测试和调试工具是针对串行程序的(非实时)。由于这些技术忽略了时序和并发,它们不能直接应用到实时系统中去,因此对实时嵌入式系统的调试技术的研究就显得尤为重要。论文首先简要介绍了实时嵌入式系统调试追踪的背景及相关概念,然后对追踪调试中遇到的探针效应进行了详细分析,并对信息收集、消除扰动和观测重现原理进行了综述。然后,针对调试过程中,使用周期调试技术来追寻程序错误时,引起非线性控制流程的中断操作很难被复制的问题,本文提出一种在实时嵌入式系统中使用的中断追踪方法,这种方法不依赖特定的硬件或特定的编译器,并能被应用到任何一个系统。在此基础上,提出了专门用来记录中断特性的记录/回放机制中的数据追踪方法。另外,为了调谐追踪定位机制,采用观察到的返回地址集群和构建的一个形式化模型实现了对这个追踪机制的量化,并通过构造round-robin哈希算法来对输入组件进行处理,从而有效地减少了哈希碰撞。另一方面,为了避免传统方法在时间和空间上的庞大开销,借鉴数字信号处理中采样方法的思路,对程序运行时行为进行周期性的采集和监控,提出了整个系统和采样机制的建模方法。通过所建立的数学模型,提出了最佳采样周期的概念,采用广度优先搜索算法实现了一种计算最佳采样周期的改进算法。实验测试和分析表明:提出的启发式算法和机制,可以对选择方程相对于非优化选择方程对错误的重复达到300%的减少。在采样追踪中,得出如何配置标记以降低采样率的规律并有效地减少本文中的方法引入的扰动的方法。相对于目前调试领域十分有限的方法和研究工作,显示了非常好的结果。