Como habilitar o NSZombie no Xcode?


302

Eu tenho um aplicativo que está travando sem rastreamento de erro. Eu posso ver parte do que está acontecendo se eu depurar, mas não consigo descobrir qual objeto é "zumbi".

Alguém sabe como habilitar o NSZombie no Xcode 4?

Respostas:


440

Variáveis ​​de ambiente agora fazem parte do "esquema".

Para editar o esquema e ativar zumbis:

  • No menu "Produto", selecione "Editar esquema".

  • Vá para o estágio "Run Foo.app" no painel esquerdo e a guia "Arguments" à direita.

  • Adicione NSZombieEnabledà seção "Variáveis ​​de ambiente" e defina o valor YEScomo, como você poderia no Xcode 3.


No Xcode 4.1 e acima , também há uma caixa de seleção na guia "Diagnóstico" do estágio "Executar" para "Ativar objetos zumbis".


Com o Xcode 6.4:

Captura de tela


5
Não interrompe a chamada para o objeto desalocado no dispositivo, alguma maneira de fazer isso acontecer?
jjxtra

95
Ele mudou novamente na versão 4.2, veja minha resposta abaixo. Vá para Produto-> Editar esquema-> Diagnósticos
Moshe Kravchik

No Xcode, no menu Ajuda na parte superior (a última à direita), procure por "Editar esquema", ele apontará você na direção certa todas as vezes em qualquer versão.
Unom

Se habilitarmos esse recurso NSZombieEnabled em nosso aplicativo, lançaremos o aplicativo para armazenar ..? Porque vi um post dizendo que não é uma boa prática lançar para armazenar quando ativamos esse recurso.
SURESH SANKE

2
Para os novatos que vem depois, no Xcode 6.1 você vai menu Product> guia Esquema Editar esquema> Diagnóstico> opção Enable Zombie Objetos
Joshua dança

146

Encontrei o mesmo problema com a solução de problemas EXC_BAD_ACCESS e tive dificuldade para encontrar a configuração com o Xcode 4.2 (o mais recente que vem com o iOS5 SDK). A Apple continua movendo as coisas e as configurações não estão mais onde costumavam estar.

Felizmente, eu o encontrei e funciona para o dispositivo, não apenas para o Simulator. Você precisa abrir o menu Produto no Xcode, selecionar Editar esquema e escolher a guia Diagnóstico. Lá você tem "Ativar objetos zumbis". Uma vez selecionado e executado no depurador, você apontará para o objeto liberado duas vezes! Aproveitar!

Em resumo

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

2
No Xcode, no menu Ajuda na parte superior (a última à direita), procure por "Editar esquema", ele apontará você na direção certa todas as vezes em qualquer versão.
Unom

43

Produto> O perfil iniciará os Instrumentos e você deverá ter um "Modelo de Rastreio" chamado "Zumbis". No entanto, esse modelo de rastreamento estará disponível apenas se o destino de compilação atual for o simulador - ele não estará disponível se você tiver o destino definido no seu dispositivo iOS.

Outra coisa a se notar é que não existe um instrumento Zombies real na biblioteca de instrumentos. O modelo de rastreamento de zumbis consiste, na verdade, no instrumento Alocações com o conjunto de configurações de ativação "Ativar detecção do NSZombie".


13
"No entanto, este modelo de rastreio estará disponível apenas se o destino de compilação atual for o simulador". Obrigado!
precisa saber é o seguinte

Obrigado, era o que eu estava procurando!
Cliff Ribaudo

No Xcode, no menu Ajuda na parte superior (a última à direita), procure por "Editar esquema", ele apontará você na direção certa todas as vezes em qualquer versão.
Unom

25

É uma simples questão de definir uma variável de ambiente no seu executável (NSZombieEnabled = YES)e depois executar / depurar seu aplicativo normalmente. Se você enviar uma mensagem para um zumbi, seu aplicativo falhará / será interrompido no depurador e NSLoguma mensagem para você.

Para obter mais informações, consulte esta página do CocoaDev: http://www.cocoadev.com/index.pl?NSZombieEnabled

Além disso, esse processo se tornará muito mais fácil com o lançamento do 10.6 e as próximas versões do Xcode e Instruments. Apenas dizendo'. =)


Totalmente de acordo. O novo instrumento Zombies é muito bom.
Quinn Taylor

22

Produto> O perfil exibirá Instrumentos. Selecione zumbis no painel e enlouqueça.


5
@jluebbert Eu diria que se esforçar mais, porque eu definitivamente vê-lo, correndo Xcode 4,02
garageàtrois

16

Vá para Produto - Esquema - editar esquema - Argumentos - Conjunto de variáveis ​​de ambiente NSZombieEnabled = YES

insira a descrição da imagem aqui

insira a descrição da imagem aqui


12

No xcode 4.2

Vá para Produto -> esquema de edição -> clique em Executar yourappname.app -> Diagonostics -> Ativar objeto Zombie.



6

A partir do Xcode 3.2.5 e Snow Leopard (Mac OS X 10.6), você pode executar o código através do instrumento Zombies: Run > Run with Performance Tool > Zombies. Isso permite que você veja objetos específicos e suas contagens contidas em uma linha do tempo.


1
Eu posso ver a opção de zumbis, mas está acinzentada. Você sabe como ele está ativado?
Rahul Vyas

@RahulVyas, eu nunca vi isso antes, mas você tem a coleta de lixo ativada? Eu podia ver Zombies não fazer sentido nesse contexto
Dov

Ativei a coleta de lixo nas configurações mostradas com suporte [-fobjc-gc], mas essa opção ainda está desativada. Na verdade, apenas as 5 últimas opções estão ativadas na categoria de instrumentos. Alguma outra ideia? Ou estou fazendo algo errado?
Rahul Vyas

@RahulVyas: Desculpe, para ser mais claro, eu pensei transformando coleta de lixo fora , possivelmente, permitir Zombies, desde que eu não acho que é possível ter um zumbi com coleta de lixo. Se isso não resolver, recomendo a leitura da documentação do Instruments (eles têm boas anotações em cada instrumento) e, se você ainda não o recebeu, poste uma pergunta aqui para obter mais atenção (e, finalmente, uma resposta) .
Dov

4

No Xcode 4.5.2, vá para Produto -> Editar esquema -> e Na guia Diagnósticos, marque a caixa de seleção entre o Objetivo C e Ativar objetos zumbis e clique em OK


3

Para habilitar o log do Zombie, clique duas vezes no executável no grupo de executáveis ​​do seu projeto do Xcode. Nesse ponto, clique na guia Argumentos e, na Variables to be set in the environment:seção, faça uma variável chamada NSZombieEnablede defina seu valor como YES.


3

No XCode 4.0: Para detectar o NSZombie nos Instrumentos, selecione o Simulador como seu alvo (não é possível detectar o NSZomboe no dispositivo). Execute instrumentos (CMD + I) e selecione o modelo de rastreamento "Zumbis". Aproveitar.


2

Nas preferências do seu add executável a variável de ambiente NSZombieEnablede definir o valor para YES.


2

no seu XCODE (4.3) ao lado do botão play :) (executar)

selecionar: editar esquema

a janela de gerenciamento do esquema será aberta

clique na guia Argumentos

Você deve ver: 1 - Argumentos transmitidos no lançamento 2 - Variáveis ​​de ambiente

dentro do local (2 variáveis ​​de ambiente) Nome: NSZombieEnabled
Valor: YES

E está feito ....


1

NSZombieEnabled é usado para depuração BAD_ACCESS,

ative a variável de ambiente NSZombiesEnabled da planilha de esquemas do Xcode.

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

este vídeo ajudará você a ver o que estou tentando dizer.


@kleopatra Obrigado atualizou minhas respostas com a configuração apropriada #
user2554822
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.