基于传播引擎的高效指针引用错误检测

0 下载量 132 浏览量 更新于2024-08-27 收藏 614KB PDF 举报
本文主要探讨的是"基于传播引擎的指针引用错误检测"这一主题。在C语言编程中,指针是一种关键的数据类型,但其广泛使用也导致了许多复杂的错误,其中指针引用错误尤为常见且具有潜在的严重后果。传统的错误检测工具,如Saturn、Splint和Clang-SA,尽管在某些方面有所作用,但由于它们可能缺乏用户友好性、检测精度不高以及难以应对大规模程序的挑战,往往无法满足实际开发中的需求。 作者针对这些问题,提出了一种创新的错误检测方法,该方法的核心是利用域敏感、流敏感和上下文敏感的传播引擎。所谓"错误属性格",即一种用于表示和跟踪程序中错误状态的抽象数据结构,它允许在源代码级别进行细致的错误分析。通过计算和传播错误属性格,该方法能够更准确地识别出指针引用错误,例如空指针引用,这是一种常见的运行时错误,可能导致程序崩溃或数据损坏。 在Open64开源编译器中,作者实现了一个原型系统Propagator,作为这项新技术的实践平台。通过将Propagator应用于包括Apache、OpenSSH和gzip在内的广泛使用的实际应用程序,作者对其性能进行了评估。实验结果显示,Propagator在平均检测时间上表现出色,仅为12秒,相较于其他工具有显著的优势。此外,误报率也控制得相当低,仅为13%,这表明Propagator在提高检测精确度的同时,保持了良好的可扩展性。 对比测试显示,Propagator在空指针引用错误检测方面的表现优于Saturn、Splint和Clang-SA,没有出现漏报已知错误,这显示出其在实际应用中的稳健性和实用性。基于传播引擎的指针引用错误检测方法不仅提高了错误检测的效率和准确性,而且具有良好的适应性和可定制性,对于提升软件质量和开发效率具有重要的意义,为未来的静态代码分析和优化提供了一种新的有效途径。