【发布时间】:2020-12-15 05:17:05
【问题描述】:
我是 macOS Big Sur。 AFAIK,Valgrind 还不支持这个操作系统。至少我试过this。
经过一番谷歌搜索,我切换到LeakSanitizier 并测试了这段 C 代码:
#include <stdlib.h>
void *p;
int main() {
p = malloc(7);
p = 0; // The memory is leaked here.
return 0;
}
post 指出 macOS 附带的 clang 没有启用 -fsanitize=address 支持。所以我从自制软件安装了clang:
/usr/local/opt/llvm/bin/clang --version
clang version 11.0.0
Target: x86_64-apple-darwin20.1.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin
好的,我们试试吧:
Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/clang -g -fsanitize=address leak1.c -o leak1
Ancalagon:Codes anta40$ ./leak1
Ancalagon:Codes anta40$
什么都没有发生。也许试试llvm-symbolizer
Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/llvm-symbolizer ./leak1
./leak1
同样的结果。也许我在这里遗漏了什么?
【问题讨论】:
标签: macos address-sanitizer leak-sanitizer