小编Obj*_*Sal的帖子

在CMake中启用AddressSanitizer的正确方法是什么?

我添加了AddressSanitizer标志如下:

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
Run Code Online (Sandbox Code Playgroud)

一切都在使用时构建并运行良好Unix Makefiles.

生成Xcode项目时出现问题,它只是不想链接,因为它找不到ASan库.

我已经找到了两个解决方案,但决定不使用它们,因为它们不能仅使用CMake自动化:

  1. 添加-Wl,-undefined,dynamic_lookup到链接的标志,因此它会跳过链接到动态库.
  2. libclang_rt.asan_osx_dynamic.dylib直接链接.

那么这两种解决方案的问题是什么?

  • 使用解决方案#1时,我必须在Xcode中手动打开目标方案并添加DYLD_INSERT_LIBRARIES指向的环境变量libclang_rt.asan_osx_dynamic.dylib.
  • 使用解决方案#2时,ASan库的路径因计算机而异.

另外作为另一种解决方案,我尝试从Xcode目标方案启用Address Sanitizer标志,但有趣的是它没有检测到我添加的问题,因此我没有将其列为解决方案,因为它未通过我的测试.

任何帮助都感激不尽.

c++ cmake clang address-sanitizer

22
推荐指数
5
解决办法
1万
查看次数

标签 统计

address-sanitizer ×1

c++ ×1

clang ×1

cmake ×1