我想使用 MallocDebug 应用程序来查找我的应用程序中的一些内存泄漏。我运行的是 Mac OS X 10.6.2。每当我尝试按照 this guide 中列出的说明进行操作时,我收到以下错误:
dyld: could not load inserted library: /usr/lib/libMallocDebug.A.dylib
Trace/BPT trap
我已验证 .dylib 文件存在,并且无论我尝试运行哪个应用程序(不限于我的应用程序),我都会遇到相同的错误。 Several others有reported this problem也是如此,但到目前为止还没有人找到解决方案。
有什么想法吗?
最佳答案
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讨论得很好。
关于c++ - 使用 libMallocDebug 调试内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295296/