首页 > 解决方案 > 什么是使用 gcc 在 cmake 中应用多种消毒剂的好方法

问题描述

GCC 有许多消毒剂(例如,泄漏、地址、线程)。但是其中许多都需要对代码进行仪表化,并且不能与其他人一起使用。因此,如果在实践中我想应用所有消毒剂以确保我的代码运行良好,那么使用所有这些消毒剂的推荐程序是什么?

我使用 CMake 管理我的项目

标签: gccaddress-sanitizerthread-sanitizer

解决方案


一些消毒剂可以在同一运行中组合在一起:Asan+UBsan+Lsan(如果您的程序没有故意的无符号溢出,则可以选择 Isan)。所有其他消毒剂(例如 Tsan 或 Msan)都需要单独的 QA 运行(这意味着每次运行都重建 SW)。此外,您很可能需要为 Valgrind 运行专用 CI(它可以检测到 Asan 无法检测到的一些错误,并且由于实现细节,它不能应用于已清理的代码)。


推荐阅读