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

hag*_*ago 41 c c++ valgrind osx-mountain-lion osx-mavericks

我过去常常用来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上安装其他类似内容?

Jon*_*ler 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支持.英特尔和POWER平台增加了对硬件事务内存的初始支持.对Mac OS X 10.8(Mountain Lion)的支持得到了改进.Memcheck对矢量化代码的准确性得到了改进.

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

[...时间过去...下载发生...希望被提出......尝试配置......希望破灭......]

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)
Run Code Online (Sandbox Code Playgroud)

Mountain Lion以Darwin 12.x为基础; 小牛队的基础是达尔文13.x. 我不确定错误消息中的消息,但开箱即用,Valgrind 3.9.0无法在OS X Mavericks上编译.


chu*_*tsu 11

只是你知道,你可能不必等待很长时间才能看到Valgrind在Mac 10.9上工作,即Maverick.根据这个错误报告,已经取得了一些成功.

我认为目前(截至2013年11月15日)没有适用于Mac的Valgrind替代品.虽然有一些值得关注,即Clang同时具有AddressSanitizer(适用于当前的mac)和MemorySanitizer(不支持mac).

有建议使用Xcode的仪器,但我发现它根本没用.


use*_*321 7

除了@Charlie_Burns上面提到的仪器之外,还有静态分析器可以通过分析代码告诉你有关这些事情的一些信息.在Xcode项目中,只需从"产品"菜单中选择"分析"即可.它调用clang静态分析器.我想你也可以clang直接从命令行使用,虽然我没有这样做.

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

  • 仪器确实有[命令行版本](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/instruments.1.html). (2认同)