Ferramentas de detecção de memory leaks

O ambiente de desenvolvimento Xcode da Apple fornece alguma ferramenta para detecção de memory leaks?

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

Documentações / tutoriais para essas ferramentas seriam muito úteis.

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

    executar -> Iniciar com Ferramenta de Desempenho -> Vazamentos

    Parece muito bom em detectar vazamentos de memory, e foi fácil para um não-chefe de C como eu descobrir.

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

    Uma alternativa comercial é o OmniObjectMeter . (Descontinuado pelo The Omni Group)

    O Clang Static Analyser é ótimo para encontrar erros no código C, C ++ e Objective-C:

    Aqui está o link para usar o instrumento do xcode para detectar memory leaks / desempenho do aplicativo ios / mac Etapas para executar o instrumento a partir do Xcode

    Você pode executar as ferramentas dentro do Xcode através do menu -> run -> start with performance tool -> ...

    O ambiente de desenvolvimento Xcode da Apple fornece alguma ferramenta para detecção de memory leaks?

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

    Sim. A Apple os chama de “Instrumentos” (há mais do que apenas ferramentas de memory).

    Consulte o Introduction to Instruments User Guide da Introduction to Instruments User Guide da Apple. Em particular, consulte Como Locating Memory Issues in Your App . Ele fornece exemplos de como usar os modelos de rastreamento orientados à memory.

    ObjectAlloc e MallocDebug devem ser de ajuda para você. Se você instalou o SDK inteiro, eles serão encontrados no Developer-> Applications-> Performance Tools.

    Seus nomes lhe dão uma boa pista sobre suas funções, OA, rastreia os objects create e MA é uma ferramenta geral de memory leaks.

    Eu ainda não os testei com o desenvolvimento do iPhone, mas tenho que acreditar que eles também funcionariam lá.

    Supondo que você tenha se registrado no site de desenvolvedores de iPhone da ADC, aqui está o link a seguir: Instruments User Guide

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

    Feito uma sum das principais ferramentas de memory leaks: iphone-essential-performance-tools-list

    Experimente este também, um tutorial simples para começar com insturments do Xcode

    Ferramenta de memory leaks: http://www.raywenderlich.com/2696/

    Básico: http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode

    insira a descrição da imagem aqui

    Etapa 1. Escolha o instrumento de alocação

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

    insira a descrição da imagem aqui

    1. Na interface principal do Instruments, clique em VM Tracker, se presente, e pressione a tecla Delete, pois você não precisará desse instrumento em particular:

    insira a descrição da imagem aqui

    Ao clicar no botão mais no canto superior direito, você pode adicionar mais instrumentos para diferentes tipos de testes, mas não os cobrarei neste tutorial.

    Etapa 2. Configure suas configurações do Google Instruments

    Antes de executar qualquer análise, há algumas coisas que você precisa fazer. Primeiro, você precisa conectar um dispositivo iOS que tenha seu aplicativo instalado. Deve ser um dispositivo físico porque o Simulador do iOS ainda é um simulador e pode não representar com precisão o uso da memory no aplicativo ou como um aplicativo pode funcionar sob pressão da memory.

    Para escolher seu alvo, clique em Meu computador, na parte superior, passe o mouse sobre o dispositivo e escolha seu aplicativo no submenu:

    insira a descrição da imagem aqui

    Em seguida, há um painel onde você pode alterar as configurações dos tipos de alocação que você visualizará. Além de garantir que a bolha Criada & Persistente esteja marcada, não há muito a ser feito antes.

    insira a descrição da imagem aqui

    Etapa 3. Pressione o registro para executar o instrumento

    Depois de pressionar o botão Gravar no canto superior esquerdo, o aplicativo será inicializado no dispositivo e os Instrumentos começarão a traçar suas alocações. Tudo o que você precisa fazer aqui é executar o aplicativo, concentrando-se em possíveis áreas problemáticas para ver se há mais alocação de memory do que desalocações. Isso pode significar muitas tarefas repetitivas, mas você se agradecerá mais tarde.

    Você deveria ver algo assim:

    insira a descrição da imagem aqui

    Recomendo a execução do seu aplicativo uma vez e a obtenção de um ponto estável na memory, para que você tenha uma boa linha de base que torne qualquer aumento perceptível. Quando estiver satisfeito, você tem dados suficientes para testar, pressione o botão Parar no canto superior esquerdo.

    Etapa 4. Analisar

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

    insira a descrição da imagem aqui

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

    insira a descrição da imagem aqui

    1. Em seguida, movo meu alcance de inspeção para um ponto em que passei pelo aplicativo novamente e voltei para nossa raiz. Aqui, você pode ver que a memory é a mesma. Então, fazendo isso mais algumas vezes e vendo sua memory voltar à nossa linha de base, você pode assumir que não há grandes problemas de memory.

    insira a descrição da imagem aqui

    Existem maneiras diferentes de analisar esses dados que não abordarei aqui, mas saiba que há todo um menu suspenso de maneiras de visualizar e analisar seus dados.

    insira a descrição da imagem aqui

    Etapa 5. Marcando as gerações

    Se você preferir não lidar com as faixas de inspeção, existe um recurso chamado Geração de Mark. Há um botão para ele no painel direito dos instrumentos.

    insira a descrição da imagem aqui

    Este botão marcará pontos na linha do tempo dos instrumentos com base em onde está a linha de inspeção. Ele faz isso para manter o controle de todas as alocações desde a marca anterior, ou desde o início, se não houver outras marcas. Você pode marcar gerações quando estiver executando o instrumento de alocação ou depois de ter parado a execução, como neste exemplo:

    insira a descrição da imagem aqui

    Etapa 6. Confira o rastreamento de pilha

    A última coisa a cobrir é olhar para o rastreamento de pilha. Para isso, você deseja definir seu intervalo de inspeção para realçar todas as alocações e, em seguida, examinar a exibição de statistics, certificando-se de que a bolha Criada & Persistente esteja selecionada no painel direito. Na visualização de statistics, certifique-se de que Bystores persistentes sejam classificados do maior para o menor. Há muitas alocações aqui, e pode ser difícil entender o que está acontecendo, já que muitas delas são alocações de sistema.

    insira a descrição da imagem aqui

    Indo fundo

    1. Veja as maiores alocações e clique na seta voltada para a direita. Muitas vezes haverá alocações dentro daquelas que você clicou e muitas delas não terão significado para você.

    insira a descrição da imagem aqui

    1. Ao destacar diferentes alocações depois de clicar em uma seta, continue observando os detalhes estendidos no painel direito. Eventualmente, você encontrará algum texto em negrito que leva ao código real em seu projeto, informando qual é o problema.

    insira a descrição da imagem aqui

    1. Se você clicar duas vezes em um dos itens em negrito no rastreamento de pilha, ele levará você ao código real (supondo que você tenha executado alocações em um aplicativo que você possui).

    insira a descrição da imagem aqui

    1. Há muitas coisas úteis sobre essa visão, uma delas é a maioria das tags amarelas à direita, mostrando a quantidade de memory que cada método recebe. Cada aplicativo é diferente para você, o desenvolvedor, decidir se o método realçado é um problema, algo que você pode otimizar ou apenas uma parte inevitável do seu aplicativo.

    2. No meu caso, essa variável UIColor é algo persistente e usado em todo o aplicativo e, portanto, é aceitável durante toda a vida útil do nosso aplicativo.

    encontrado aqui