【发布时间】:2020-09-30 13:36:08
【问题描述】:
我正在使用 Clang 在 x86_64 OS X(MacOS 10.15.5 Catalina) 上编译我的项目。
我想从哪个文件、哪个函数、哪一行准确识别导致内存泄漏。我正在尝试使用Address Sanitizer,特别是Leak Sanitizer。
这是我在编译时使用的标志:
-Wall -Wextra -flto -O3 -march=native -ffast-math -fsanitize=address
编译成功。但是,当我尝试使用运行时标志 ASAN_OPTIONS=detect_leaks=1 来启用 Leak Sanitizer 时,我看到以下错误:
==26454==AddressSanitizer: detect_leaks is not supported on this platform.
Abort trap: 6
我做错了什么?我该如何解决这个问题?
或者,Valgrind 还有其他好的替代品吗? Valgrind 对我不起作用,因为 1)我使用的是 MacOS Catalina,2)我的程序以无限循环运行。如果我是对的,Valgrind 在退出程序后会显示消息,所以它不会工作。
如果有人能就这个问题给我建议,我将不胜感激。
【问题讨论】:
标签: gcc memory-leaks clang address-sanitizer