我正在运行MacOS Big Sur,并尝试安装valgrind
以完成任务。brew install valgrind
目前不工作,从tar.bz2发行版安装也不工作。
运行./configure
(根据自述文件的说明)在结尾返回以下内容:
checking for a supported OS... ok (darwin20.1.0)
checking for the kernel version... unsupported (20.1.0)
configure: error: Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x and 17.x (Mac OS X 10.6/7/8/9/10/11 and macOS 10.12/13)
从这一点来看,似乎valgrind
在过去几个MacOS版本中并不起作用。
是否有替代当前MacOS版本的版本,或者现在是我在硬盘上为Linux创建分区的好时机?或者我在安装过程中遗漏了什么?
3条答案
按热度按时间vltsax251#
正如在评论中提到的,Louis Brunner的github repo是你目前最好的选择。这至少会给予你一个最低限度的功能构建。
除了通常的版本号更改之外,Big Sur中最大的,破坏性的变化之一是系统库被dyld缓存(和隐藏)。所以现在Valgrind无法读取
libsystem_malloc.dylib
以确定malloc
等函数的地址,以便它们可以被重定向。如果有人想尝试一下,那么我的猜测是,你需要遵循these instructions,并更改initimg-darwin. c,以便dyld_cache_value为“avoid”。
vc9ivgsu2#
对于其他任何寻找答案的人,您可以使用valgrind-macos,这是MacOS上Valgrind的一个分支,正如PhillipMills所推荐的那样。XCode还提供了泄漏检查工具。
但是,如果你不使用XCode,也不喜欢第一个选项,你可以尝试Address/Leak Sanitizer。区别在于你必须编译并链接到其中一个Sanitizer,但这只需要一个额外的标志,即
-fsanitize=address
。请注意,Apple Clang不支持泄漏检查,所以你必须从Brew中获取llvm。另外,你需要在你的可执行文件前加上ASAN_OPTIONS=detect_leaks=1
。w3nuxt5m3#
另一种可能性是使用XCode附带的软件
leaks
。使用示例:
leads --atExit -- {yourProgramWithArgs}
要了解更多信息,请使用
man leaks
或leaks --help
。