42

我曾经valgrind在 Mac OS X 10.6 (Snow Leopard) 和 10.7 (Lion) 上用于检测我的 C/C++ 应用程序的内存泄漏,但我发现它在最近的版本中不受支持,例如 10.8 (Mountain Lion) 和 10.9 (Mavericks)我升级了我的操作系统。valgrind是否可以在 Mac OS X 10.9 上安装其他类似的东西?

4

3 回答 3

12

正如你所知道的,你可能不需要等待很长时间就能看到 Valgrind 在 Mac 10.9 aka Maverick 上工作。因为根据这个错误报告已经取得了一些成功。

我认为目前(截至 2013 年 11 月 15 日)没有适用于 Mac 的 Valgrind 替代品。不过有一些需要注意,即同时具有AddressSanitizer(适用于当前 Mac)和MemorySanitizer(尚不支持Mac)的Clang 。

有使用 Xcode 的 Instruments 的建议,但我发现它一点用都没有。

于 2013-11-15T19:19:52.717 回答
12

2013-11-01,valgrind团队宣布了 Valgrind 3.9.0:

我们很高兴地宣布 Valgrind 的新版本 3.9.0,可从http://www.valgrind.org获得。

3.9.0 是一个具有许多改进和常见错误修复集合的功能版本。此版本增加了对 MIPS64/Linux、Intel AVX2 指令和 POWER8 指令的支持。为 S390 添加了 DFP 支持。已为 Intel 和 POWER 平台添加了对硬件事务内存的初始支持。改进了对 Mac OS X 10.8 (Mountain Lion) 的支持。提高了 Memcheck 在矢量化代码上的准确性。

改进后的 Mountain Lion 支持是否意味着它对小牛队有效还有待观察。它确实提到该支持仅适用于 64 位代码。

[...时间流逝...下载发生...提出了希望...尝试配置...希望破灭...]

啊!

...
checking build system type... x86_64-apple-darwin13.0.0
checking host system type... x86_64-apple-darwin13.0.0
checking for a supported CPU... ok (x86_64)
checking for a 64-bit only build... no
checking for a 32-bit only build... no
checking for a supported OS... ok (darwin13.0.0)
checking for the kernel version... unsupported (13.0.0)
configure: error: Valgrind works on Darwin 10.x and 11.x (Mac OS X 10.6/7)

Mountain Lion 基于 Darwin 12.x;Mavericks 基于 Darwin 13.x。我不确定错误消息中的消息,但开箱即用,Valgrind 3.9.0 无法在 OS X Mavericks 上编译。

于 2013-11-01T13:42:37.497 回答
7

除了上面@Charlie_Burns 提到的 Instruments 之外,还有静态分析器可以通过分析您的代码来告诉您其中的一些事情。在您的 Xcode 项目中,只需从“产品”菜单中选择“分析”。它调用clang静态分析器。我认为您也可以根据需要clang直接从命令行使用,尽管我没有这样做。

在命令行上,您还可以访问leaks命令和dtrace命令。

于 2013-11-01T03:26:52.127 回答