中文

NSan:一种浮点数值消毒器

软件工程 2021-02-26 v1

摘要

消毒器是软件工程中相对较新的趋势。它们旨在自动发现程序中的缺陷,如今已作为编译器工具链的一部分普遍提供给程序员使用。例如,LLVM项目包含开箱即用的消毒器,用于检测线程安全(tsan)、内存(asan、msan、lsan)或未定义行为(ubsan)缺陷。在本文中,我们介绍nsan,一种用于在LLVM消毒器框架内实现、用于定位与调试浮点数值问题的新消毒器。nsan注重实用性,旨在及时提供精确且可操作的反馈。nsan使用编译期插桩,为程序中的每次浮点计算附加一个更高精度的影子值,并在程序执行期间检查其一致性。这使得nsan比现有方法快1到4个数量级,从而能够作为单元测试的一部分常规运行,或用于检测大型生产应用中的问题。

关键词

引用

@article{arxiv.2102.12782,
  title  = {NSan: A Floating-Point Numerical Sanitizer},
  author = {Clement Courbet},
  journal= {arXiv preprint arXiv:2102.12782},
  year   = {2021}
}