我正在运行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创建分区的好时机?或者我是不是错过了安装中的某些东西?
发布于 2020-11-26 14:28:40
正如评论中提到的,目前你最好的选择就是路易·布鲁纳的github repo。这至少应该给你一个功能最少的构建。
除了通常的版本号更改之外,big Sur中一个重大的、突破性的更改是系统库被dyld缓存(和隐藏)的事实。所以现在Valgrind不能读取libsystem_malloc.dylib来确定像malloc这样的函数的地址,这样它们就可以被重定向。
如果有人想要尝试一下,那么我猜你需要遵循these instructions,并修改dyld_cache_value -darwin.c,使其成为“避免”。
发布于 2021-10-18 13:15:45
对于其他正在寻找答案的人,你可以使用PhillipMills推荐的valgrind-macos,这是macOS上Valgrind的一个分支。XCode还提供了泄漏检查工具。
但是,如果您不使用XCode并且不喜欢第一个选项,您可以尝试地址/泄漏消毒器。不同之处在于,您必须编译并链接其中一个消毒器,但这只需要一个额外的标志,即-fsanitize=address。请注意,Apple Clang不支持泄漏检查,因此您必须从Brew获取llvm。此外,您还需要在可执行文件之前添加ASAN_OPTIONS=detect_leaks=1。
https://stackoverflow.com/questions/65009780
复制相似问题