MacOS Valgrind替代品?

des4xlb0  于 2023-03-29  发布在  Mac
关注(0)|答案(3)|浏览(168)

我正在运行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创建分区的好时机?或者我在安装过程中遗漏了什么?

vltsax25

vltsax251#

正如在评论中提到的,Louis Brunner的github repo是你目前最好的选择。这至少会给予你一个最低限度的功能构建。
除了通常的版本号更改之外,Big Sur中最大的,破坏性的变化之一是系统库被dyld缓存(和隐藏)。所以现在Valgrind无法读取libsystem_malloc.dylib以确定malloc等函数的地址,以便它们可以被重定向。
如果有人想尝试一下,那么我的猜测是,你需要遵循these instructions,并更改initimg-darwin. c,以便dyld_cache_value为“avoid”。

vc9ivgsu

vc9ivgsu2#

对于其他任何寻找答案的人,您可以使用valgrind-macos,这是MacOS上Valgrind的一个分支,正如PhillipMills所推荐的那样。XCode还提供了泄漏检查工具。
但是,如果你不使用XCode,也不喜欢第一个选项,你可以尝试Address/Leak Sanitizer。区别在于你必须编译并链接到其中一个Sanitizer,但这只需要一个额外的标志,即-fsanitize=address。请注意,Apple Clang不支持泄漏检查,所以你必须从Brew中获取llvm。另外,你需要在你的可执行文件前加上ASAN_OPTIONS=detect_leaks=1

w3nuxt5m

w3nuxt5m3#

另一种可能性是使用XCode附带的软件leaks
使用示例:leads --atExit -- {yourProgramWithArgs}
要了解更多信息,请使用man leaksleaks --help

相关问题