【问题标题】:Debugging memory leaks with libMallocDebug使用 libMallocDebug 调试内存泄漏
【发布时间】:2010-02-19 09:47:31
【问题描述】:

我想使用 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,但目前还没有人找到解决办法。

有什么想法吗?

【问题讨论】:

    标签: c++ debugging macos memory-leaks malloc


    【解决方案1】:

    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讨论还不错。

    【讨论】:

    • 我刚刚提交了一个错误 - 有没有我可以使用的替代工具,因为这个似乎不可用?
    • 您不能只将您的应用程序编译为 32 位吗?有leaks 命令行工具。 Valgrind 有点适用于 Snow Leopard,但可能无法让您满意(您需要自己构建它;请参阅bugs.kde.org/show_bug.cgi?id=205241 的讨论)。
    • 并非如此。根据苹果的说法,MallocDebug 方法已被弃用,取而代之的是 Instruments 应用程序,尽管我个人似乎无法让该特定应用程序做任何明智的事情。
    猜你喜欢
    • 2010-12-01
    • 2021-01-10
    • 2010-11-23
    • 2018-11-22
    • 1970-01-01
    • 2013-09-28
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多