我添加了 AddressSanitizer 标志如下:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
使用Unix Makefiles
.
问题出现在生成 Xcode 项目时,它只是不想链接,因为它找不到 ASan 库。
我已经找到了两个解决方案,但决定不使用它们,因为它们不能仅使用 CMake 实现自动化:
- 添加
-Wl,-undefined,dynamic_lookup
到链接标志,因此它跳过链接到动态库。 - 直接链接
libclang_rt.asan_osx_dynamic.dylib
。
那么这两种解决方案有什么问题呢?
- 使用解决方案 #1 时,我必须在 Xcode 中手动打开目标方案并添加
DYLD_INSERT_LIBRARIES
指向libclang_rt.asan_osx_dynamic.dylib
. - 使用解决方案 #2 时,ASan 库的路径因计算机而异。
此外,作为另一种解决方案,我尝试从 Xcode 目标方案中启用 Address Sanitizer 标志,但有趣的是它没有检测到我添加的问题,因此我没有将其列为解决方案,因为它未能通过我的测试。
任何帮助都感激不尽。