Как включить NSZombie в Xcode? - PullRequest
       150

Как включить NSZombie в Xcode?

294 голосов
/ 22 марта 2011

У меня есть приложение, которое аварийно завершает работу без отслеживания ошибок. Я могу видеть часть того, что происходит, если я отлаживаю, но не могу понять, какой объект "зомбируется".

Кто-нибудь знает, как включить NSZombie в Xcode 4?

Ответы [ 15 ]

434 голосов
/ 22 марта 2011

Переменные среды теперь являются частью "схемы".

Чтобы отредактировать схему и включить зомби:

  • В меню «Продукт» выберите «Редактировать схему».

  • Перейдите к этапу «Запустить Foo.app» на левой панели и к вкладке «Аргументы» справа.

  • Добавьте NSZombieEnabled в раздел «Переменные среды» и установите значение YES, как вы могли бы в Xcode 3.


В Xcode 4.1 и выше на вкладке «Диагностика» этапа «Выполнить» также есть флажок «Включить объекты-зомби».


С Xcode 6.4:

Screenshot

141 голосов
/ 16 ноября 2011

Я столкнулся с той же проблемой при устранении неполадок EXC_BAD_ACCESS, и мне было трудно найти настройку с помощью Xcode 4.2 (последняя версия, поставляемая с iOS5 SDK).Apple продолжает двигаться, и настройки уже не там, где раньше.

К счастью, я нашел его, и он работает для устройства, а не только для симулятора.Вам нужно открыть меню «Продукт» в Xcode, выбрать «Редактировать схему», а затем выбрать вкладку «Диагностика».Там у вас есть «Включить объекты зомби».После того, как выбран и запущен в отладчике, вы укажете на дважды освобожденный объект!Наслаждайтесь!

Короче говоря

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
43 голосов
/ 05 мая 2011

Продукт> Профиль запустит Инструменты, а затем у вас должен появиться «Шаблон трассировки» с именем «Зомби».Однако этот шаблон трассировки доступен только в том случае, если текущим местом назначения сборки является симулятор - он не будет доступен, если в качестве места назначения установлено устройство iOS.

Еще одна вещь, которую следует отметить, - это отсутствие реальных зомби.инструмент в библиотеке инструментов.Шаблон трассировки зомби фактически состоит из инструмента Распределения с набором конфигурации запуска «Включить обнаружение NSZombie».

25 голосов
/ 31 июля 2009

Это просто вопрос установки переменной окружения в вашем исполняемом файле (NSZombieEnabled = YES), а затем запуска / отладки вашего приложения в обычном режиме. Если вы отправляете сообщение зомби, ваше приложение аварийно завершает работу с отладчиком и NSLog сообщение для вы.

Для получения дополнительной информации посетите страницу CocoaDev: http://www.cocoadev.com/index.pl?NSZombieEnabled

Кроме того, этот процесс станет намного проще с выпуском 10.6 и следующими версиями Xcode и Instruments. Просто говорю'. =)

22 голосов
/ 04 апреля 2011

Product> Профиль появится в инструментах. Выберите зомби на панели и сходите с ума.

16 голосов
/ 11 декабря 2013

Перейти к Продукт - Схема - схема редактирования - Аргументы - Переменные среды set NSZombieEnabled = ДА

enter image description here

enter image description here

12 голосов
/ 08 ноября 2011

В xcode 4.2

Перейти, Продукт -> Редактировать схему -> Нажмите Запустить yourappname.app -> Диагоности -> Включить объект Zombie.

11 голосов
/ 31 января 2011

Вот видео и объяснение, как использовать Instruments и NSZombie для поиска и исправления сбоев памяти на iOS: http://www.markj.net/iphone-memory-debug-nszombie/

6 голосов
/ 09 декабря 2010

Начиная с Xcode 3.2.5 и Snow Leopard (Mac OS X 10.6), вы можете запустить свой код с помощью инструмента Zombies: Run > Run with Performance Tool > Zombies.Это позволяет вам видеть конкретные объекты и их количество на временной шкале.

4 голосов
/ 07 декабря 2012

В Xcode 4.5.2 перейдите в Product -> Edit Scheme -> и на вкладке Diagnostics установите флажок между Objective C и Enable Zombie Objects и нажмите OK

...