【发布时间】:2017-01-13 13:44:19
【问题描述】:
假设我有以下程序:
#include <iostream>
float foo(float f)
{ return (f / 0); }
int main(void) {
foo(1.0f);
std::cout << "hello" << std::endl;
}
如果我调用clang++ -fsanitize=undefined main.cpp && ./a.out 那么它将输出:
main.cpp:4:32: runtime error: division by zero
hello
有没有办法在检测到错误后立即终止a.out? IE。以这样的方式显示:
main.cpp:4:32: runtime error: division by zero
没有在下一行显示hello? (因为它之前已经终止了)
【问题讨论】:
-
Related: stackoverflow.com/q/30809022/420683 --> 可以使用环境变量
UBSAN_OPTIONS=halt_on_error=1