论文部分内容阅读
C程序运行时错误是程序错误中较难发现的一类错误,因为运行时错误是程序在运行中产生的错误,具有隐蔽性强、不可预见的特征。比如常见的运行时错误包括数组越界、动态存储分配、内存溢出、指针非法引用、类型不一致的隐式转换等,这些错误是在编译期不能被发现的错误。随着程序规模不断的增大和程序功能越来越复杂,这些运行时错误即使在测试阶段也难被发现。特别是在实际运行环境中,随着程序的运行产生的那些潜在、未知的意外错误,目前的错误检测工具不能检测出这些错误。例如程序的意外停止、多线程程序产生的异常行为、逻辑错误、不可靠数据源引起的错误等,这些错误在运行期发生后,需要借助传统的调试手段分析、查找错误。但是这种方式有不足之处,其主要体现在下面两个方面:完全依靠人工介入、工作量较大;对于某些异常行为和多线程程序不能重现真实的执行环境。如果能够捕获程序执行时的变量信息,那么运行时错误现场也会被捕获,进而以此为依据分析查找错误。对此本文提出了基于变量跟踪的运行时错误现场分析技术。本文的主要工作包括以下几方面:①介绍本文的研究背景、程序运行时错误分析技术及工具的现状与不足,提出一种基于变量跟踪的运行时错误现场分析方法。②用源代码插装技术,实现一个可以供用户选择的插装范围的轻量级插桩程序,包括所有变量、指定变量、函数范围内的插装。③利用并改进现有的程序分析技术,提供两种错误分析查找辅助手段。一种是利用程序信息流分析技术对源程序进行切片减少错误查找范围;另一种是利用测试来获取运行时依赖信息,建立模型计算出可能出错语句的可疑度,进一步缩小错误排查范围。④实现运行时错误现场分析工具(Runtime Fault SiteAnalysis),提供多种数据视图窗口。本文研究了基于变量跟踪的自动插装技术,目的是捕获程序运行中变量的动态信息,同时提供了两种运行时错误分析手段。最后基于以上技术实现了运行时错误现场分析工具RFST,为程序运行时错误分析提供错误现场和辅助分析手段。在应用中,有较强的实用性,是现有运行时错误查找工具的有力补充。