2010-02-19 49 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