Address Sanitizer - 抑制 gtest

Posted

技术标签:

【中文标题】Address Sanitizer - 抑制 gtest【英文标题】:Address Sanitizer - suppress for gtest 【发布时间】:2022-01-23 13:34:58 【问题描述】:

是否可以抑制单元测试功能?我的项目中有地址消毒剂,我收到了有关堆栈缓冲区溢出信息的报告,我想抑制这些信息。

它已经是一个有类似问题的***页面here,但是这个问题的解决方案不是我想要的(我不想禁用测试)。

例如

TEST_F(classA, testA) 
  some_struct a;
  a.p = 100;
  ASSERT_FALSE(&foo());

我不想在此测试中使用地址清理程序。应该运行测试,但我不希望有任何地址清理报告

【问题讨论】:

通常测试运行器会运行多个使用不同配置构建的测试,例如 test+coverage、test+address、test+ub、test+thread。在为 address-sanitizer 构建时禁用一个测试用例是一个很好的解决方案,禁用的测试用例将在其他构建配置中运行。 【参考方案1】:

我收到有关堆栈缓冲区溢出信息的报告,我想抑制这些信息。

如果您只想忽略错误,一种解决方案是根本不使用地址清理程序进行测试。

我不想在这个测试中使用地址清理器。

如果您想禁止此特定测试用例的消毒剂报告,同时将其他测试用例的消毒剂保留在此源文件中,使用disable_sanitizer_instrumentation 属性可能会解决问题。

【讨论】:

以上是关于Address Sanitizer - 抑制 gtest的主要内容,如果未能解决你的问题,请参考以下文章

Advanced Debugging and the Address Sanitizer

Xcode特性Address Sanitizer

Address Sanitizer 调用了 OOM-killer

Android jni 集成 Address Sanitizer

Android jni 集成 Address Sanitizer

Android jni 集成 Address Sanitizer