【发布时间】:2021-01-13 23:59:48
【问题描述】:
我有一个由 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")
但它在某些方面不起作用(它没有显示我在哪里有内存泄漏)。我用一个肯定包含内存泄漏的测试应用程序进行了测试,仍然没有发生任何事情。有人能解释一下我该怎么做吗?
【问题讨论】:
-
你试过 -lasan 吗?
-
@OznOg 我应该把它放在哪里?
-
在您的链接标志中
-
@OznOg 应该是“设置 (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_STATIC_LINKER_FLAGS_DEBUG} -lasan -fno-omit-frame-pointer -fsanitize=address")”吗?
-
变量
CMAKE_LINKER_FLAGS_DEBUG对CMake没有特殊意义。要为可执行目标设置链接器标志,请使用CMAKE_EXE_LINKER_FLAGS_DEBUG。
标签: c++ cmake address-sanitizer