如何使用clang';MacOS上有什么消毒剂?

如何使用clang';MacOS上有什么消毒剂?,macos,address-sanitizer,leak-sanitizer,Macos,Address Sanitizer,Leak Sanitizer,我是马科斯大苏尔。抱歉,Valgrind还不支持这个操作系统。至少我试过了 在谷歌搜索之后,我切换到并测试了以下C代码: #include <stdlib.h> void *p; int main() { p = malloc(7); p = 0; // The memory is leaked here. return 0; } 好的,让我们试试: Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/clang -g -fs

我是马科斯大苏尔。抱歉,Valgrind还不支持这个操作系统。至少我试过了

在谷歌搜索之后,我切换到并测试了以下C代码:

#include <stdlib.h>
void *p;
int main() {
  p = malloc(7);
  p = 0; // The memory is leaked here.
  return 0;
}
好的,让我们试试:

Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/clang -g -fsanitize=address leak1.c -o leak1
Ancalagon:Codes anta40$ ./leak1
Ancalagon:Codes anta40$
什么也没发生。也许可以尝试
llvm符号器

Ancalagon:Codes anta40$ /usr/local/opt/llvm/bin/llvm-symbolizer ./leak1
./leak1

同样的结果。也许我在这里遗漏了什么?

要启用LeakSanitarizer set
ASAN\u OPTIONS=detect\u leaks=1
或使用
-fsanize=leak
标志

此外,根据,如果使用
clang
11.0版和
Xcode
11.3版,请使用
clang
-mlinker version=450
标志以避免链接器错误

例如:

$ /usr/local/opt/llvm/bin/clang -g -fsanitize=address leak1.c -o leak1
$ ASAN_OPTIONS=detect_leaks=1 ./leak1


似乎我必须同时使用
-fsanize=address
ASAN\u OPTIONS=detect\u leaks=1
$ /usr/local/opt/llvm/bin/clang -g -fsanitize=address leak1.c -o leak1
$ ASAN_OPTIONS=detect_leaks=1 ./leak1
$ /usr/local/opt/llvm/bin/clang -g -fsanitize=leak leak1.c -o leak1
$ ./leak1