Отладка с помощью пула автоматического выпуска и переменных среды - PullRequest
0 голосов
/ 07 ноября 2011

У меня проблема с отладкой проекта. Этот проект не самый лучший, у него много проблем с памятью (утечки, зомби). Проект написан не мной, поэтому я даже не знаю «незначительных чудес» в нем. Проблема в том, что где-то в проекте есть NS (Mutable) Array с опцией autorelease. Может быть, с другой стороны, есть выпуск (я не могу найти точную строку кода, где он находится).

Когда я запускаю проект на устройстве, после открытия нескольких представлений появляется предупреждение о памяти. Метод didReceiveMemoryWarning становится комедийным, а viewDidUnload - нет.

Возможно, проект уничтожает этот массив с указанным выпуском, и когда появляется предупреждение о памяти и удаляется пул авто-релиза, счетчик сохранения массива равен -1 =>, это зомби. Проблема в том, что в режиме отладки не отображается ни строки отладки, ни стека вызовов, а только предупреждение о получении памяти.

[Classname didReceiveMemoryWarning]

-> и вылет. Я включил переменные среды: NSZombieEnabled , NSHangOnUncaughtException ,

NSAutoreleaseFreedObjectCheckEnabled, NSDebugEnabled, MallocStackLogging, MallocStackLoggingNoCompact, NSDeallocateZombies, но без результата.

Есть ли у вас какие-либо идеи, что мне делать, чтобы выяснить, какой массив виноват (без переписывания всего проекта: P)?

1 Ответ

0 голосов
/ 07 ноября 2011

Вы пробовали команду malloc_history?

http://www.cocoadev.com/index.pl?DebuggingAutorelease

...