在Mac OS X Mountain Lion和Mavericks上是否有任何替代valgrind的方法来检测C / C ++应用程序的内存泄漏?

我曾经使用valgrind来检测Mac OS X 10.6(Snow Leopard)和10.7(Lion)上的C / C ++应用程序的内存泄漏,但是我发现在10.8(Mountain Lion)和10.9(Mavericks)当我升级我的操作系统。 还有什么可以安装在Mac OS X 10.9上的valgrind吗?

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

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

3.9.0是一个function版本,具有许多改进和通常的错误修复集合。 此版本增加了对MIPS64 / Linux,Intel AVX2指令和POWER8指令的支持。 DFP支持已添加到S390。 英特尔和POWER平台增加了对硬件事务内存的初始支持。 支持Mac OS X 10.8(Mountain Lion)得到了改进。 vector化代码的Memcheck准确性得到了提高。

还有待观察的是,改进的山狮支持是否意味着小牛的运行状况良好。 它确实提到支持仅适用于64位代码。

[…时间passeth …下载发生…希望提高…configuration尝试…希望是破灭…]

Urgh!

 ... 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) 

山狮是基于达尔文12.x; 小牛是基于达尔文13.x. 我不确定错误消息中的消息,但是开箱即用的,Valgrind 3.9.0不能在OS X Mavericks上编译。

只要你知道,你可能不需要等很长时间才能看到Valgrind在Mac 10.9上工作,也就是Maverick。 由于这个错误报告已经取得了一些成功。

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

有build议使用Xcode的仪器,但我没有发现它有用。

除了@Charlie_Burns上面提到的工具之外,还有一些静态分析器可以通过分析代码来告诉你这些事情。 在你的Xcode项目中,从“产品”菜单中select“分析”。 它调用clang静态分析器。 我想如果你愿意,也可以直接从命令行使用clang ,尽pipe我没有这样做。

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