使用 Cmake 启用 AddressSanitizer

Tuấ*_*hạm 3 c++ cmake address-sanitizer

我有一个由 cmake 构建的项目。我想用 AddressSanitizer 构建它来检测内存泄漏。我将这些行添加到 CMakeLists.txt 中:

set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
Run Code Online (Sandbox Code Playgroud)

但它不起作用(它没有显示我哪里有内存泄漏)。我用一个肯定包含内存泄漏的测试应用程序进行了测试,但仍然没有发生任何事情。有人可以解释我应该怎么做吗?

Pol*_*lot 5

作为另一种选择,可以向目标添加消毒剂:

target_link_libraries(MyTarget PRIVATE -fsanitize=address)
Run Code Online (Sandbox Code Playgroud)

从这个答案得到,用 cmake 3.6 测试