Pergunta

ambiente de desenvolvimento Xcode da A Apple fornece todas as ferramentas para a detecção de vazamento de memória?

Estou especialmente interessado em ferramentas que se aplicam ao iPhone SDK. Atualmente minha plataforma favorita para projetos de programação passatempo

Documentações / tutoriais para a referida ferramentas seria muito útil.

Foi útil?

Solução

Há um especificamente chamado Leaks e como um cartaz anterior disse, a maneira mais fácil de executá-lo é em linha reta do Xcode:

Executar -> Iniciar com a ferramenta Performance -> Vazamentos

Parece muito bons em detectar vazamentos de memória, e era fácil para um chefe não-C como eu descobrir.

Outras dicas

Selecionar Profile a partir do menu Product no Xcode 6 para lançar ferramenta Instrumentos da Apple. (O aplicativo está localizado dentro conteúdo do pacote do aplicativo Xcode: /Applications/Xcode.app/Contents/Applications/)

Uma alternativa comercial é OmniObjectMeter . (Descontinuado por o Grupo Omni)

O Clang Static Analyser é grande para encontrar erros em C, C ++ e código de Objective-C:

Aqui está o link para a utilização de instrumento de Xcode para detectar vazamento de memória / desempenho de vocês ios application / mac Passos para executar instrumento de Xcode

Você pode executar as ferramentas dentro de Xcode sobre menu -> run -> start with performance tool -> ...

ambiente de desenvolvimento Xcode da A Apple fornece todas as ferramentas para a detecção de vazamento de memória?

Estou especialmente interessado em ferramentas que se aplicam ao iPhone SDK.

Sim. Apple chama-los "Instruments" (há mais do que apenas ferramentas de memória).

Veja da Apple Introduction to Instruments User Guide . Em particular, veja Locating Memory Issues in Your App . Ele fornece exemplos de como usar os modelos traço orientada a memória.

ObjectAlloc e MallocDebug deve ser tanto de ajuda para você. Se você instalou todo o SDK, eles vão ser encontrados em Developer-> Aplicações-> Ferramentas de desempenho.

Seus nomes dará uma boa pista bonita quanto às suas funções, OA, rastreia os objetos criar e MA é uma ferramenta geral de vazamento de memória.

Eu não tentei-los com o desenvolvimento do iPhone ainda, mas eu tenho que acreditar que eles iriam trabalhar lá também.

Assumindo que você se cadastrou no site do desenvolvedor iPhone ADC, aqui o link a seguir: Instruments User Guide

Ao usar rustyshelf's solution certifique-se de testar no iPhone e não no simulador. uso de memória é dramaticamente diferente.

Feito um resumem das principais ferramentas de vazamento de memória: iphone-essential-performance-tools-list

Tente este também, um tutorial simples de começar com insturments Xcode

ferramenta de vazamento de memória: http://www.raywenderlich.com/2696/

Basic: http://www.raywenderlich.com/ 23037 /-how-to-instrumentos de uso-in Xcode

enter descrição da imagem aqui

Passo 1. Escolha o instrumento alocações

  1. Escolha o modelo de perfil para alocações:

enter descrição da imagem aqui

  1. Na interface principal Instruments, clique em VM Tracker, se presente, e pressione a tecla Delete desde que você não vai precisar esse instrumento em particular:

enter descrição da imagem aqui

Ao clicar no botão de adição no canto superior direito, você pode adicionar mais instrumentos para diferentes tipos de testes, mas eu não vou estar cobrindo-os neste tutorial.

Passo 2. Defina suas configurações de Instrumentos

Antes de executar qualquer análise, existem algumas coisas que você precisa fazer. Primeiro, você precisa se conectar em um dispositivo iOS que tem seu aplicativo instalado. Deve ser um dispositivo físico porque o iOS Simulator ainda é um simulador e podem não representar fielmente o uso de memória em seu aplicativo ou como um aplicativo pode trabalhar sob pressão de memória.

Para escolher o seu destino, clique em Meu computador perto do topo, pairar sobre o seu dispositivo, e em seguida, escolher a sua aplicação a partir do submenu:

enter descrição da imagem aqui

A seguir, há um painel onde você pode alterar as configurações para os tipos de alocações você estará vendo. Além de ter certeza que o Criado & persistente bolha estiver marcada, não há muito que você precisa fazer de antemão.

enter descrição da imagem aqui

Passo 3. Pressione registro para executar o instrumento

Uma vez que você pressionar o botão de gravação no canto superior esquerdo, seu aplicativo será iniciado no seu dispositivo, e Instruments começará a traçar suas alocações. Tudo que você precisa fazer aqui é executado através de sua aplicação, com foco em possíveis áreas problemáticas para ver se mais aloca memória do que Desaloca. Isto poderia significar fazer um monte de tarefas repetitivas, mas você vai agradecer-te mais tarde.

Você deve ver algo como isto:

enter descrição da imagem aqui

Eu recomendo que atravessa seu aplicativo uma vez e chegar a um ponto estável na memória para que você tenha uma boa base que fará com que qualquer aumento perceptível. Quando estiver satisfeito que você tem dados suficientes para teste, pressione o botão de parada no canto superior esquerdo.

Passo 4. Analisar

  1. A primeira coisa que faço é definir minha faixa de inspeção para medir os bytes persistentes totais na minha linha de base. Esse número de bytes persistentes está localizado logo abaixo do resumo de alocação.

enter descrição da imagem aqui

Para realmente definir o intervalo de inspeção, use o atalho de teclado Comando < para a faixa de inspeção esquerda e Comando> para a faixa de inspeção direita. Em nossa aplicação, temos uma linha de base de cerca de 20MB.

enter descrição da imagem aqui

  1. Então, eu mover minha faixa de inspeção direito a um ponto onde eu tinha corrido através do aplicativonovamente e voltou para a nossa raiz. Aqui, você pode ver a memória é aproximadamente o mesmo. Então, ao fazer isso mais algumas vezes e vendo sua memória voltar para a nossa linha de base, você pode supor não há grandes problemas de memória.

enter descrição da imagem aqui

Existem diferentes maneiras de analisar esses dados que não vou abordar aqui, mas estar ciente de que há um menu completo drop-down de maneiras de ver e analisar seus dados.

enter descrição da imagem aqui

Passo 5. Marcação gerações

Se você prefere não lidar com os intervalos de inspeção tanto, existe um recurso chamado Mark Generation. Há um botão para ele no painel direito de instrumentos.

enter descrição da imagem aqui

Este botão vai marcar pontos na linha do tempo de instrumentos com base em onde a linha de inspeção é. Ele faz isso, a fim de manter o controle de todas as alocações vez que a marca anterior, ou desde o início, se não houver outras marcas. Você pode marcar gerações como você está executando o instrumento alocações ou após ter terminado a corrida, como neste exemplo:

enter descrição da imagem aqui

Passo 6. Confira o rastreamento de pilha

A última coisa a tampa está olhando para o rastreamento de pilha. Para isso, pretende definir a sua gama de inspeção para destacar todas as alocações, e depois olhar para as estatísticas de visualização, certificando-se o Criado & persistente bolha é selecionado no painel da direita. Nas estatísticas Ver, certifique-Bytes persistentes é classificada maior para o menor. Há uma série de atribuições aqui, e pode ser difícil de entender o que está acontecendo, já que muitos deles são alocações do sistema.

enter descrição da imagem aqui

Going Deep

  1. Olhe para as maiores dotações e clique na seta voltada para a direita. Muitas vezes, haverá atribuições dentro aqueles que você clicou e muitos deles não têm significado para você.

enter descrição da imagem aqui

  1. Como você realçar diferentes alocações após clicar em uma seta, continue olhando para o detalhe estendida no painel da direita. Eventualmente, você vai se deparar com algum texto corajoso que leva ao código real em seu projeto, dizendo-lhe que o problema pode ser.

enter descrição da imagem aqui

  1. Se fizer duplo-clique em um dos itens em negrito no rastreamento de pilha, ele vai levá-lo para o código real (supondo que você correu alocações em um aplicativo você possui).

enter descrição da imagem aqui

  1. Há um monte de coisas úteis sobre este ponto de vista, sendo um deles as tags em sua maioria amarelas sobre o direito mostrando-lhe o quanto de memória cada chamada de método está ocupando. Cada aplicativo é diferente para que você, o desenvolvedor, tem que decidir se o método destacado é um problema, algo que você pode otimizar, ou apenas um uparte navoidable do seu aplicativo.

  2. No meu caso, que UIColor variável é algo que é persistente e utilizados em todo o nosso app e é, portanto, aceitável ao longo da vida de nosso aplicativo.

encontrada aqui

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