Отслеживание утечки памяти - PullRequest
0 голосов
/ 21 февраля 2011

В моем приложении какао есть утечка памяти, и я сделал все возможное, чтобы найти его владельца, но не смог.Утечка началась пару дней назад, когда я реализовал GCD-версию платформы AsyncSocket .Я не знаю, является ли мой собственный код причиной появления утечки или это сама библиотека.Инструменты не дают хорошего обратного следа.Единственное, что смутно одно:

   0 libSystem.B.dylib calloc
   1 CoreFoundation __addHandler2
   2 Foundation +[__NSObserver isAnObserver:]
   3 Foundation -[NSNotificationCenter removeObserver:name:object:]
   4 Foundation -[NSNotificationCenter removeObserver:]
   5 Foundation -[NSRunLoop(NSRunLoop) dealloc]
   6 CoreFoundation CFRelease
   7 CoreFoundation __CFFinalizeRunLoop
   8 libSystem.B.dylib _pthread_tsd_cleanup
   9 libSystem.B.dylib _pthread_exit
  10 libSystem.B.dylib start_wqthread

Может кто-нибудь указать мне направление, необходимое для более продвинутой трассировки или обратного инжиниринга и т. Д .?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

Если некоторые из ваших объектов добавляют себя в качестве наблюдателей в NSNotificationCenter, убедитесь, что вы делаете removeObserver: до того, как эти объекты будут освобождены.

0 голосов
/ 21 февраля 2011

Вы пытались делать сборку и анализировать в своем приложении? Это помогает в поиске утечек памяти на основе alloc-release, которые иногда можно упустить из виду. Вы также можете использовать библиотеку с исходными файлами, импортированными в ваш проект, а затем выполнить сборку и анализ для запуска анализа в библиотеке.

...