Gcc 当Address Sanitizer说此平台不支持检测_泄漏时,我应该修复什么?
我正在使用Clang在x86_64 OS X(MacOS 10.15.5 Catalina)上编译我的项目 我想准确地识别哪个文件、哪个函数、哪个行导致内存泄漏。我正在尝试使用,特别是 以下是我在编译时使用的标志:Gcc 当Address Sanitizer说此平台不支持检测_泄漏时,我应该修复什么?,gcc,memory-leaks,clang,address-sanitizer,Gcc,Memory Leaks,Clang,Address Sanitizer,我正在使用Clang在x86_64 OS X(MacOS 10.15.5 Catalina)上编译我的项目 我想准确地识别哪个文件、哪个函数、哪个行导致内存泄漏。我正在尝试使用,特别是 以下是我在编译时使用的标志: -Wall -Wextra -flto -O3 -march=native -ffast-math -fsanitize=address 它成功地编译了。但是,当我尝试使用运行时标志ASAN\u OPTIONS=detect\u leaks=1以启用泄漏消毒剂时,我看到以下错误:
-Wall -Wextra -flto -O3 -march=native -ffast-math -fsanitize=address
它成功地编译了。但是,当我尝试使用运行时标志ASAN\u OPTIONS=detect\u leaks=1
以启用泄漏消毒剂时,我看到以下错误:
==26454==AddressSanitizer: detect_leaks is not supported on this platform.
Abort trap: 6
我做错了什么?我怎样才能解决这个问题
或者,有没有其他好的选择来代替Valgrind?Valgrind不适合我,因为1)我使用MacOS Catalina,2)我的程序运行在无限循环中。如果我是对的,Valgrind会在退出程序后显示消息,因此它不会工作
如果有人能就这个问题给我一些建议,我将不胜感激
我做错了什么
没什么。问题是您的Clang版本不支持泄漏检测。然而,看起来最新版本确实如此。见和
Valgrind在退出程序后显示消息,因此无法工作
您有点正确:默认情况下,Valgrind将仅在程序退出时执行泄漏分析
有两种解决方法:
谢谢你的回答!很难相信我能找到一个好的解决方案来检测MacOS上的漏洞。我想知道人们是如何处理内存泄漏问题的。