Pergunta

Eu estou tentando localizar vazamentos utilizando instrumentos, mas os vazamentos que vejo lá são como os da próxima imagem:

vazamentos

Como você pode ver, não há informações de que linha de código é exatamente o vazamento. Todos os vazamentos que tenho, cerca de 20, são assim, ou em outras palavras, os vazamentos não mostram qualquer linha do meu código em particular.

O vazamento nesta foto está relacionada com "_CFAllocatorSystem" (???) na CoreFoundation e eu tenho outros que simplesmente dizem GSEvent. Eu não tenho idéia do que está gerando estas.

Como posso descobrir isso?

Obrigado por qualquer ajuda.

Foi útil?

Solução

Eu acho que você quer ir em instrumentos depois de correr sob vazamento e selecione "View Source". Então você precisa arrastar os arquivos de origem na janela do instrumento. Ele vai então mostrar as linhas do código onde a fuga ocorre juntamente com a pilha de chamadas.

Alguns lance off código da mina vazamentos de uma vista. Parece que este em Instruments: texto alt http://img688.imageshack.us/img688/9669/screenshot20091028at131.png

Outras dicas

A coisa que os vazamentos mostra que você é, o rastreamento para o código que alocou o objeto que está vazando (o que significa que é mantido, mas a sua aplicação não tem variáveis ??deixou que têm esse endereço). O que ele não mostra que você é apenas onde o objeto deveria ter sido lançado para não causar o vazamento, por isso é impossível saber (é possível encontrar onde lançamento está sendo chamado, mas que pode não ser tão útil).

Então, o que este rastreamento está me dizendo, é que alguns bit de memória alocada pelo sistema está sendo retido por você, e então a referência esquecido - uma chave é a linha "PurpleEvent", que é comum em uma negociação segmento com temporizador eventos ou talvez notificações. Poderia ser você recebeu uma notificação e manteve alguma coisa com ele, sem liberá-lo mais tarde.

Se você sabe sobre em que ponto o vazamento ocorre, você deve ser capaz de isolar o código está sendo executado durante esse tempo.

aqui e, especialmente, esta citação:

Esta lista informa sobre tipos, tamanhos, endereços dos objetos que vazaram, e até mesmo suas pilhas de chamadas.

Depois, você pode rastrear a origem de memórias que vazaram através das pilhas de chamadas.

Os shows rastreamento de pilha exatamente qual linha é o culpado. Aparentemente linha 14 em main.m no seu caso. Não sei o que está confuso sobre?

O culpado foi o acelerômetro e estou compilando para OS 3.0.

Em outras palavras, o acelerômetro que a Apple disse que seus vazamentos foram corrigidos, ainda está vazando como o inferno.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top