У меня есть проект, созданный с помощью 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")
Но это как-то не работает (не показывает, где у меня утечка памяти). Я протестировал тестовое приложение, которое определенно содержит утечки памяти, но ничего не произошло. Может кто-нибудь объяснить, как мне это сделать?
CMAKE_LINKER_FLAGS_DEBUG
не имеет особого значения для CMake. Чтобы установить флаги компоновщика для исполняемой цели, используйте CMAKE_EXE_LINKER_FLAGS_DEBUG. - person Tsyvarev   schedule 17.06.2018make
(после вызоваcmake
), вы можете запуститьmake VERBOSE=1
для просмотра командных строк, используемых для компиляции и компоновки. Сравните их с командными строками, предложенными для использования address-sanitizer. - person Tsyvarev   schedule 17.06.2018