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


302

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

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

Ответы:


440

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

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

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

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

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


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


С Xcode 6.4:

Скриншот


5
Не прерывается ли вызов освобожденного объекта на устройстве, есть ли способ сделать это?
JJXTRA

95
Это изменилось снова в 4.2, см. Мой ответ ниже. Перейдите в Product-> Edit Scheme-> Diagnostics
Моше Кравчик

В XCode, в меню «Справка» вверху (последний справа), ищите «Редактировать схему», он будет указывать вам правильное направление каждый раз в любой версии.
Unom

Если мы включим эту функцию NSZombieEnabled в наше приложение, мы выпустим приложение для хранения ..? Потому что я видел один пост, в котором говорится, что не рекомендуется выпускать в хранилище, когда мы включаем эту функцию.
SURESH SANKE

2
Для новичков, следующих после, в Xcode 6.1 вы идете в меню Product> Scheme-Edit Scheme> вкладка Diagnostics> Checkbox Включить объекты зомби
Joshua Dance

146

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

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

Коротко

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects

2
В XCode, в меню «Справка» вверху (последний справа), ищите «Редактировать схему», он будет указывать вам правильное направление каждый раз в любой версии.
Unom

43

Product> Profile запустит Instruments, а затем у вас должен появиться «Шаблон трассировки» с именем «Zombies». Однако этот шаблон трассировки доступен только в том случае, если текущим местом назначения сборки является симулятор - он не будет доступен, если в качестве места назначения установлено устройство iOS.

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


13
Msgstr "Однако этот шаблон трассировки доступен только в том случае, если текущим местом назначения сборки является симулятор". Спасибо!
ajh158

Спасибо, это то, что я искал!
Клифф Рибаудо

В XCode, в меню «Справка» вверху (последний справа), ищите «Редактировать схему», он будет указывать вам правильное направление каждый раз в любой версии.
Unom

25

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

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

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


Полностью согласен. Новый инструмент Zombies очень хорош.
Куинн Тейлор

22

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


5
@jluebbert Я бы сказал, что стараться изо всех сил, потому что я определенно вижу, работает Xcode 4.02
garageàtrois

16

Перейти к продукту - схема - редактировать схему - аргументы - переменные среды установлены NSZombieEnabled = YES

введите описание изображения здесь

введите описание изображения здесь


12

В xcode 4.2

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



6

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


1
Я вижу вариант зомби, но он неактивен. Вы знаете, как это включено?
Рахул Вьяс

@RahulVyas, я никогда не видел этого раньше, но у тебя включена сборка мусора? Я мог видеть, что Зомби не имеют смысла в этом контексте
Дов

Я включил сборку мусора в настройках, которые он показывает, поддерживает [-fobjc-gc], но все же эта опция отключена. Infact только последние 5 опций включены в категории инструментов. Любая другая идея? Или я что-то не так делаю?
Рахул Вьяс

@RahulVyas: Извините, чтобы быть более ясным, я думал, что отключение сбора мусора , возможно, позволит зомби, так как я не думаю, что возможно иметь зомби со сборкой мусора. Если это не решит проблему, я бы порекомендовал прочитать документацию по инструментам (у них есть хорошая рецензия на каждый инструмент), а если вы все еще не получили ее, опубликуйте здесь вопрос, чтобы привлечь к нему больше внимания (и, в конечном итоге, ответ) ,
Дов

4

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


3

Чтобы включить ведение журнала Zombie, дважды щелкните исполняемый файл в группе исполняемых файлов вашего проекта XCode. В этот момент перейдите на вкладку Аргументы и в Variables to be set in the environment:разделе создайте переменную с именем NSZombieEnabledи установите для нее значение YES.


3

В XCode 4.0: для обнаружения NSZombie в инструментах выберите симулятор в качестве цели (не удается обнаружить NSZomboe на устройстве). Запустите инструменты (CMD + I) и выберите шаблон трассировки «Зомби». Наслаждаться.


2

В настройках вашего исполняемого файла добавьте переменную окружения NSZombieEnabledи установите значение в YES.


2

в вашем XCODE (4.3) следующая кнопка воспроизведения :) (запустить)

выберите: изменить схему

откроется окно управления схемой

нажмите на вкладку Аргументы

вы должны увидеть: 1- Аргументы переданы при запуске 2- переменные окружения

внутри (2-переменных среды) место Имя: NSZombieEnabled
Значение: ДА

И это сделано ....


1

NSZombieEnabled используется для отладки BAD_ACCESS,

включите переменную окружения NSZombiesEnabled из листа схем Xcode.

Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box

это видео поможет вам увидеть, что я пытаюсь сказать.


@kleopatra Спасибо обновил мои ответы с соответствующей настройкой
user2554822
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.