Mam aplikację, która ulega awarii bez śledzenia błędów. Widzę część tego, co się dzieje, jeśli debuguję, ale nie mogę ustalić, który obiekt jest „zombie”.
Czy ktoś wie, jak włączyć NSZombie w Xcode 4?
Zmienne środowiskowe są teraz częścią „schematu”.
Aby edytować schemat i włączyć zombie:
W menu „Produkt” wybierz „Edytuj schemat”.
Przejdź do etapu „Uruchom Foo.app” w lewym panelu i zakładkę „Argumenty” po prawej stronie.
Dodaj NSZombieEnabled
do sekcji „Zmienne środowiskowe” i ustaw wartość YES
, tak jak w Xcode 3.
W Xcode 4.1 i nowszych znajduje się również pole wyboru na zakładce „Diagnostyka” na etapie „Uruchom”, aby „Włącz obiekty zombie”.
Z Xcode 6.4:
Napotkałem ten sam problem podczas rozwiązywania problemów z EXC_BAD_ACCESS i miałem trudności ze znalezieniem ustawienia w Xcode 4.2 (najnowszym, który jest dostarczany z iOS5 SDK). Apple ciągle się porusza, a ustawienia nie są już takie, jak kiedyś.
Na szczęście go znalazłem i działa na urządzeniu, nie tylko na Symulator. Musisz otworzyć menu Produkt w Xcode, wybrać Edytuj schemat, a następnie zakładkę Diagnostyka. Tam masz „Enable Zombie Objects”. Po wybraniu i uruchomieniu w debuggerze wskaże ci podwójnie zwolniony obiekt! Cieszyć się!
W skrócie
źródło
Produkt> Profil uruchomi Instrumenty, a następnie powinien istnieć „Szablon śledzenia” o nazwie „Zombie”. Jednak ten szablon śledzenia jest dostępny tylko wtedy, gdy bieżącym miejscem docelowym kompilacji jest symulator - nie będzie dostępny, jeśli miejsce docelowe jest ustawione na urządzenie z systemem iOS.
Należy również zauważyć, że w bibliotece instrumentów nie ma rzeczywistego instrumentu Zombie. Szablon śledzenia zombie faktycznie składa się z instrumentu Alokacje z zestawem konfiguracji uruchamiania „Włącz wykrywanie NSZombie”.
źródło
Wystarczy ustawić zmienną środowiskową w pliku wykonywalnym
(NSZombieEnabled = YES)
, a następnie uruchomić / debugować aplikację w normalny sposób. Jeśli wysyłasz wiadomość do zombie, aplikacja ulegnie awarii / przerwie w debugowaniu iNSLog
pojawi się komunikat.Aby uzyskać więcej informacji, odwiedź stronę CocoaDev: http://www.cocoadev.com/index.pl?NSZombieEnabled
Ponadto proces ten stanie się znacznie łatwiejszy wraz z wydaniem 10.6 i następnych wersji Xcode i instrumentów. Tylko mówię'. =)
źródło
Produkt> Profil wyskoczy Instrumenty. Wybierz zombie z panelu i zwariuj.
źródło
Idź do produktu - schemat - schemat edycji - argumenty - zestaw zmiennych środowiskowych NSZombieEnabled = TAK
źródło
W xcode 4.2
Idź, Produkt -> edytuj schemat -> kliknij Uruchom swoją nazwę.app.app -> Diagonostyka -> Włącz obiekt Zombie.
źródło
Oto wideo i wyjaśnienie, jak korzystać z Instrumentów i NSZombie, aby znaleźć i naprawić awarie pamięci w iOS: http://www.markj.net/iphone-memory-debug-nszombie/
źródło
Począwszy od Xcode 3.2.5 i Snow Leopard (Mac OS X 10.6), można uruchomić swój kod za pomocą instrumentu Zombies:
Run > Run with Performance Tool > Zombies
. To pozwala zobaczyć poszczególne obiekty i ich zachowanie liczy się na osi czasu.źródło
W Xcode 4.5.2 goto Product -> Edycja schematu -> i pod zakładką Diagnostyka zaznacz pole wyboru pomiędzy celem C i włączeniem obiektów zombie, a następnie kliknij OK
źródło
Aby włączyć rejestrowanie Zombie, kliknij dwukrotnie plik wykonywalny w grupie plików wykonywalnych swojego projektu Xcode. W tym momencie kliknij kartę Argumenty iw
Variables to be set in the environment:
sekcji utwórz zmienną wywoływanąNSZombieEnabled
i ustaw jej wartość naYES
.źródło
W XCode 4.0: Aby wykryć NSZombie w instrumentach, wybierz Symulator jako cel (nie można wykryć NSZomboe na urządzeniu). Uruchom Instruments (CMD + I) i wybierz szablon śledzenia „Zombie”. Cieszyć się.
źródło
W preferencjach pliku wykonywalnego dodaj zmienną środowiskową
NSZombieEnabled
i ustaw wartość naYES
.źródło
w ur XCODE (4.3) następnie przycisk odtwarzania :) (uruchom)
wybierz: edytuj schemat
otworzy się okno zarządzania schematem
kliknij kartę Argumenty
powinieneś zobaczyć: 1- Argumenty przekazane przy uruchomieniu 2 zmienne środowiskowe
wewnątrz (2 zmiennych środowiskowych) nazwa Nazwa: NSZombieEnabled
Wartość: TAK
I gotowe ...
źródło
NSZombieEnabled służy do debugowania BAD_ACCESS,
włącz zmienną środowiskową NSZombiesEnabled z arkusza schematów Xcode.
Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box
ten film pomoże ci zobaczyć, co próbuję powiedzieć.
źródło