2010-02-19 129 views
2

我想使用MallocDebug应用程序在我的应用程序中查找一些内存泄漏。我正在运行Mac OS X 10.6.2。每当我试着按照this guide列出的说明,我收到以下错误:使用libMallocDebug调试内存泄漏

dyld: could not load inserted library: /usr/lib/libMallocDebug.A.dylib 

Trace/BPT trap 

我已验证了名为.dylib文件存在,我也得到了同样的错误,无论我尝试和运行其应用程序(它是不限于我的申请)。 Several others也有reported this problem,但到目前为止还没有人找到解决方案。

任何想法?

回答

4

libMallocDebug不适用于64位可执行文件。

% lipo -info /usr/lib/libMallocDebug.A.dylib  
Architectures in the fat file: /usr/lib/libMallocDebug.A.dylib are: i386 ppc7400 

它不会出现在10.6与32位可执行文件的工作,虽然,例如:

% lipo -thin i386 /bin/ls -out foo 
% DYLD_INSERT_LIBRARIES=/usr/lib/libMallocDebug.A.dylib ./foo   
libMallocDebug[foo-9141]: initializing libMallocDebug on thread 903 
[...] 

我不知道这是否是一个疏忽或者它从来就没有移植到64位运行时。你可以尝试提交一个错误。

更新:似乎现在正常的malloc中只有更多的调试功能。 This讨论很不错。

+0

我刚刚提交了一个bug - 是否有任何替代工具可以使用,因为这个似乎无法使用? – Thomi 2010-02-19 10:50:33

+0

你不能只编译你的应用程序为32位?有'leaks'命令行工具。 Valgrind kinda与Snow Leopard合作,但可能无法令您满意(您需要自己构建;请参阅https://bugs.kde.org/show_bug.cgi?id=205241上的讨论)。 – 2010-02-19 18:05:48

+0

不是真的。根据苹果公司的说法,MallocDebug方法已被弃用,以支持乐器应用程序,尽管我个人似乎无法让特定的应用程序做任何明智的事情。 – Thomi 2010-02-24 09:59:43