Як включити NSZombie в Xcode?


302

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

Хтось знає, як включити NSZombie в Xcode 4?

Відповіді:


440

Змінні середовища тепер є частиною "схеми".

Щоб відредагувати схему та увімкнути зомбі:

  • У меню "Продукт" виберіть "Редагувати схему".

  • Перейдіть на етап "Запустити Foo.app" на панелі ліворуч і праворуч на вкладці "Аргументи".

  • Додайте NSZombieEnabledдо розділу "Змінні середовища" та встановіть значення YES, як ви могли в Xcode 3.


У Xcode 4.1 і вище є також прапорець на вкладці "Діагностика" на етапі "Виконати", щоб "Увімкнути об'єкти зомбі".


З Xcode 6.4:

Знімок екрана


5
Чи не перерветься дзвінок на розміщений об'єкт на пристрої, яким-небудь чином це зробити?
jjxtra

95
Він знову змінився в 4.2, дивіться мою відповідь нижче. Перейдіть до продукту-> Редагувати схему-> Діагностика
Моше Кравчик

У Xcode в меню довідки вгорі (останній праворуч) шукайте "Редагувати схему", вона буде вказувати вас у правильному напрямку кожен раз у будь-якій версії.
unom

Якщо ми включимо цю функцію NSZombieEnabled у наш додаток, чи випустимо це додаток для зберігання ..? Тому що я бачив одну публікацію, яка говорить про те, що її недоцільна практика випускати для зберігання, коли ми включаємо цю функцію.
SURESH SANKE

2
Для новобранців, що наступають після цього, у Xcode 6.1 ви перейдете до меню Продукт> Схема редагування схем> вкладка Діагностика> Поле Включити об'єкти зомбі
Joshua Dance

146

У мене виникла та сама проблема з усуненням несправностей EXC_BAD_ACCESS, і мені було важко знайти налаштування з Xcode 4.2 (остання версія, яка постачається з iOS5 SDK). Apple продовжує рухати речі і налаштування вже не там, де раніше.

На щастя, я знайшов це, і він працює для пристрою, а не лише для Simulator. Потрібно відкрити меню Продукт у Xcode, вибрати схему Редагування, а потім вибрати вкладку Діагностика. Там у вас є "Увімкнути об'єкти зомбі". Після вибору та запуску у відладчику вкажете на подвійно звільнений об’єкт! Насолоджуйтесь!

Коротко

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

2
У Xcode в меню довідки вгорі (останній праворуч) шукайте "Редагувати схему", вона буде вказувати вас у правильному напрямку кожен раз у будь-якій версії.
unom

43

Product> Profile запустить інструменти, і тоді у вас повинен бути "шаблон шаблону" з назвою "зомбі". Однак цей шаблон слідів доступний лише у тому випадку, якщо поточне призначення збірки є тренажером - він не буде доступний, якщо для вашого пристрою iOS встановлено призначення.

Також слід відзначити, що в бібліотеці інструментів немає фактичного інструмента «Зомбі». Шаблон відстеження зомбі насправді складається з інструменту Allocations з набором конфігурації запуску "Включити виявлення NSZombie".


13
"Однак цей шаблон сліду доступний лише у тому випадку, якщо поточне призначення збірки є тренажером". Дякую!
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 = ТАК

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

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


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], але все-таки цю опцію вимкнено. У категорії інструментів увімкнено лише інфакт останніх 5 варіантів. Будь-яка інша ідея? Або я роблю щось не так?
Рахул Вяс

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

4

У Xcode 4.5.2 перейдіть до продукту -> Редагувати схему -> та на вкладці Діагностика встановіть прапорець між Об'єктивом C та Увімкнути об'єкти зомбі та натисніть кнопку ОК


3

Щоб увімкнути ведення журналу Zombie, двічі клацніть виконуваний файл у групі виконуваних файлів вашого проекту Xcode. У цей момент перейдіть на вкладку Аргументи і в Variables to be set in the environment:розділі зробіть названу змінну NSZombieEnabledта встановіть її значення YES.


3

У XCode 4.0: щоб виявити NSZombie в інструментах, виберіть Симулятор як свою ціль (не вдається виявити NSZomboe на пристрої). Запустіть інструменти (CMD + I) та оберіть шаблон трасування "Zombies". Насолоджуйтесь.


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 Спасибі оновив мої відповіді відповідною настройкою
користувач2554822
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.