Отладка утечек памяти с помощью libMallocDebug - PullRequest
2 голосов
/ 19 февраля 2010

Я хочу использовать приложение MallocDebug для обнаружения утечек памяти в моем приложении. Я использую Mac OS X 10.6.2. Всякий раз, когда я пытаюсь следовать инструкциям, перечисленным в этом руководстве , я получаю следующую ошибку:

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

Trace/BPT trap

Я проверил, что файл .dylib существует, и я получаю ту же ошибку независимо от того, какое приложение я пытаюсь запустить (оно не ограничивается моим приложением) Несколько других уже сообщили об этой проблеме , но пока никто не нашел решения.

Есть идеи?

1 Ответ

4 голосов
/ 19 февраля 2010

libMallocDebug недоступен для 64-разрядных исполняемых файлов.

% lipo -info /usr/lib/libMallocDebug.A.dylib    
Architectures in the fat file: /usr/lib/libMallocDebug.A.dylib are: i386 ppc7400 

Похоже, что он работает с 32-разрядными исполняемыми файлами в 10.6, хотя, например:

% 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 теперь есть еще больше возможностей отладки. Это обсуждение довольно хорошее.

...