2011-09-20 90 views
8

我需要一个工具,它可以帮助我找到内存泄漏在一个C程序中以valgrind类似的方式。它应该知道程序何时覆盖它不应该存储的内容(例如,通过错误地计算数组索引)。我了解到,泄漏实用工具以及图形仪器应用程序。Valgrind喜欢的工具在Mac OS 10.7(狮子)

但是我认为它可以找到分配给新的(或malloc)的内存,这个新的内存没有被释放,并且不再被访问。我还了解到valgrind应该在旧版本(10.5和10.6)上工作,但我使用狮子(10.7)。

+0

正如上面所写,它不能与狮子(10.7)一起工作。 – Nils

+1

@Mat:Lion不支持Lion(10.7),因为OP指出,他们自6月起就开始使用它,但看起来并不那么容易:https://bugs.kde.org/show_bug.cgi?id = 275168 – Matthieu

+0

从你的链接@Matthieu,似乎人们已经得到它的工作。 –

回答

4

我会使用XCode开发人员工具MallocDebug。你应该这样用的XCode安装在你的/开发人员文件夹

或者,也可以在GDB运行应用程序,并通过运行

% gdb <program name> 
(gdb) set env MallocStackLoggingNoCompact 1 
(gdb) run 

然后使用原生的malloc记录,可以使用/usr/bin/leaks/usr/bin/malloc_history发现明显的泄漏

+0

在一个数组访问中意外增加了2个变量而不是增加它们的情况下进行了测试。没有MallocStackLoggingNoCompact bt输出是无用的,但是在设定之后,它告诉了我确切的行! Thx的提示! – Nils

+0

但是我在10.7中找不到MallocDebug。另外,鲨鱼已经不见了。:( – Nils

+0

看起来像MallocDebug已被'Instruments'应用程序中的'Leaks'乐器所取代。 – Seth

8

Valgrind 3.7.0(发布5 2011年11月)su狮子。 http://valgrind.org

+0

它可以直接下载,编译和使用它。 –