在gcc-4.9 更改中它说:
UndefinedBehaviorSanitizer (ubsan) 是一种快速的未定义行为检测器,已添加并可通过 -fsanitize=undefined 启用。将检测各种计算以在运行时检测未定义的行为。UndefinedBehaviorSanitizer 目前可用于 C 和 C++ 语言。
我查看了这个问题(检测未定义行为的 C++ 实现?),但它似乎已经过时了。
这个链接(http://gcc.gnu.org/ml/gcc-patches/2013-06/msg00264.html)有一些关于它的信息,但它已经有几个月的历史了。
这是尝试将未定义的行为清理程序添加到 GCC。请注意,它是非常 alpha 版本;到目前为止,它并没有做那么多,目前它应该处理除以零情况、INT_MIN / -1 和各种移位情况(移位负值,当第二个操作数 >= 而不是 TYPE_PRECISION (first_operand) 时移位和诸如此类。(到目前为止,关于整数类型。)
从我读过的内容来看,它正在被移植到gcc
from LLVM
.
我已经尝试过了(5 / 0)
,唯一的区别似乎是这个输出:
main.cpp:5:19: runtime error: division by zero
有没有人有更多关于它的信息或它有什么特点?