论文部分内容阅读
并行程序调试是一个复杂的课题,在这方面做了很多研究工作,但许多问题仍没有得到圆满解决。本文对并行调试中的时钟模型、时间开销、交互式调试的干扰、动态条件断点、性能调试等问题进行了研究,取得了有价值的成果。在这些研究工作的基础之上,作者设计了一个机群系统并行程序调试环境并实现了其原型系统。本文的主要贡献包括以下几个方面: 1. 描述了性能调试的基本含义和特征,分析了它应提供的方法和手段及需要解决的主要技术问题,进而归纳出并行程序性能调试的模型框架:性能数据采集- 性能数据可视化和分析- 程序修改。针对正确性调试和性能调试在技术及应用上逐步融合、统一的趋势,提出了调试环境的概念,即把性能调试和正确性调试有机地集成于一个环境中。2. 开发了一种基于事件的物理时钟。结合物理时钟和逻辑时钟的优点,设计了一个事后分析的时钟调整算法,证明了其正确性和收敛性。该混合时钟可以满足一般机群系统并行程序调试环境的需要,且无任何额外的通信开销。3. 提出了一种基于状态冻结的确定性检查点设置方法,解决了长时间运行程序的调试问题。该方法避免了检查点中的孤儿消息、多米诺效应和活锁问题;用记录的方法处理中途消息;用记录/重放方法解决不确定性问题。有效地解决了调试和检查点结合所产生的各种问题,且结构清晰、易于实现。4. 为降低交互式调试的干扰,提出了一种新的无干扰(pure)调试模式。所设计的冻结和解冻算法是实现无干扰调试模式的基础,通过形式化分析交互式调试操作对程序的干扰特性,从理论上证明了冻结和解冻算法的正确性。5. 采用动态插装技术,实现了条件断点。此种方法和传统方法相比效率极高,从测试的数据看,比GDB快几倍到几百倍;该方法同时也降低了调试器的干扰。6. 提出了基于状态冻结的交互式性能调试模式。性能测量代码的动态插装技术将交互式调试模式引入到了性能调试中;状态冻结是为了降低交互式调试的干扰。精确到源程序行级的性能数据采集,摆脱了程序构造符的限制,使采集的精度更高、采集的范围更灵活。7. 在本文研究成果的基础之上,设计并实现了一个机群系统并行程序调试环境- DENNET的原型系统。