c++ - 使用 libMallocDebug 调试内存泄漏

标签 c++ debugging macos memory-leaks malloc

我想使用 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 othersreported 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/

相关文章:

python - 为什么 mercurial 版本总是 1.3.1,即使我安装了 1.6.4?

macos - 如何在 Mac OS X 10.4 上以通用二进制方式编译 LibJpeg

c++ - 如何在 C++/UNIX 中查找库类型(.so 或 .a)

c++ - 在复制构造函数中使用 *this 作为 const 来克隆自身

c# - 在每次调用时调用一个方法

php - 如何连接到Oracle数据库?

c++ - 寻找时间序列数据的 C++ 数据仓库

c++ - 创建类索引器 operator[] 允许字符串参数(字符串索引)

python - TypeError : 'dict' object is not callable fix in python card game

c# - 过滤 C# 的调试输出