当clang-sanitizer发现错误时,如何终止clang-instrumented程序?

时间:2017-01-13 13:44:20

标签: c++ clang clang++

说我有以下程序:

#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?即以这种方式显示:

main.cpp:4:32: runtime error: division by zero

没有在以下行显示hello? (因为它之前已经终止)

1 个答案:

答案 0 :(得分:4)

您需要使用-fno-sanitize-recover命令行参数:

clang++ -fsanitize=undefined -fno-sanitize-recover=undefined main.cpp