【问题标题】:clang sanitizer callback on error错误时的 clang sanitizer 回调
【发布时间】:2017-12-26 19:43:12
【问题描述】:

是否可以设置某种回调,当 clang sanitizers 发现错误时将调用该回调?我需要打印一些有用的信息,例如 - 测试名称。

附:测试保存/存储为 XML 文件,而不是 C++,这就是堆栈跟踪不会告诉我失败的测试名称的原因。

【问题讨论】:

    标签: c++ sanitizer


    【解决方案1】:

    __sanitizer_set_death_callback__asan_set_error_report_callback(在asan_interface.h中声明)。

    正如 willir 所指出的,使用ASAN_OPTIONS=abort_on_error=1 运行可能就足够了。这将导致 Asan 在出错时调用 abort,然后许多单元测试框架可以跳过失败的测试并继续执行。

    【讨论】:

    • 感谢您的回复。我想补充一点,在许多情况下,ASAN_OPTIONS=abort_on_error 环境变量似乎就足够了。它使消毒剂调用abort 而不是_exit,因此您可以处理它。大多数测试框架已经处理abort
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2012-08-02
    • 2015-11-16
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多