是否有任何技术可以检测GCC的未定义行为?

时间:2016-02-01 18:56:09

标签: c++ c++11 gcc

如果程序根据C ++ 11标准以不可预测的方式运行,是否有任何命令行选项或技术使GCC编译器报告错误?

1 个答案:

答案 0 :(得分:6)

  

...让编译器报告一些错误...

是的,有很多警告会检测到可能的UB,您可以使用GCC的-Werror选项将警告变为错误。

同样如@LogicStuff's comment中所述,GCC支持Undefined Behavior Sanitizer

虽然检测UB的更好工具主要是静态代码分析工具,它可以检测大多数此类缺陷。

在任何情况下,您都必须处理误报,并且需要再次检查您的代码。