C++ 使用libMallocDebug调试内存泄漏

C++ 使用libMallocDebug调试内存泄漏,c++,debugging,macos,memory-leaks,malloc,C++,Debugging,Macos,Memory Leaks,Malloc,我想使用MallocDebug应用程序查找我的应用程序中的一些内存泄漏。我正在运行MacOSX10.6.2。每当我尝试并遵循中列出的说明时,都会出现以下错误: dyld: could not load inserted library: /usr/lib/libMallocDebug.A.dylib Trace/BPT trap 我已经验证了.dylib文件存在,无论我尝试运行哪个应用程序,我都会收到相同的错误(它不限于我的应用程序)。但到目前为止,还没有人找到解决办法 有什么想法吗?lib

我想使用MallocDebug应用程序查找我的应用程序中的一些内存泄漏。我正在运行MacOSX10.6.2。每当我尝试并遵循中列出的说明时,都会出现以下错误:

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

Trace/BPT trap
我已经验证了.dylib文件存在,无论我尝试运行哪个应用程序,我都会收到相同的错误(它不限于我的应用程序)。但到目前为止,还没有人找到解决办法


有什么想法吗?

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位运行时。你可以试着整理一个bug


更新:现在常规malloc中似乎有更多的调试功能。讨论非常好。

我刚刚提出了一个bug-有没有其他工具可以使用,因为这个工具似乎不可用?你不能只编译32位的应用程序吗?有一个
leaks
命令行工具。Valgrind可以与雪豹一起工作,但可能无法让您满意(您需要自己构建它;请参阅上的讨论)。不太可能。据苹果称,MallocDebug方法正在被弃用,取而代之的是Instruments应用程序,尽管我个人似乎无法让这个特定的应用程序做任何明智的事情。