Finalidade

Este mentor de ferramentas fornece uma visão geral de como usar o Rational Purify® para localizar erros em tempo de execução nos programas.

O PurifyPlus é um produto da Rational que oferece a funcionalidade Purify. 

Para saber mais sobre o Purify e para obter uma introdução em estilo de tutorial, leia o manual Installing and Getting Started da família de produtos PurifyPlus (versão para UNIX).

Para obter instruções passo a passo sobre como usar o Purify e para obter informações de referência, consulte a Ajuda on-line do Purify.

Informações relacionadas no Rational Unified Process:

Visão Geral

O Purify detecta erros em tempo de execução, incluindo vazamentos de memória, tanto no seu próprio código quanto nos componentes usados pelo software, mesmo quando você não possui o código-fonte. Ele informa erros de memória como, por exemplo, erros de limites de matriz, acesso através de ponteiros oscilantes, leituras de memória não inicializadas, erros de alocação de memória e vazamentos de memória, para que você possa resolvê-los antes de ocasionarem danos. 

Passos na Ferramenta

Para testar um programa usando o Purify, é necessário:

    1. Fazer a instrumentação do programa e executá-lo com o Purify para detectar erros em tempo de execução
    2. Analisar as mensagens de erro do Purify
    3. Corrigir os erros e executar novamente o programa

1. Fazer a instrumentação do programa e executá-lo com o Purify para detectar erros em tempo de execução 

O primeiro passo na purificação do código é fazer a instrumentação do programa e executá-lo.

Basta adicionar a palavra purify ao início da linha de compilação/vínculo. Para obter o maior número possível de detalhes nas mensagens do Purify, compile o programa usando a opção de depuração -g. Por exemplo:

% purify cc -g hello_world.c

No IRIX, você poderá usar o comando acima ou poderá purificar o arquivo executável: purify a.out.

O Purify efetua a instrumentação do código copiando as bibliotecas e o código-objeto, e usando a tecnologia Inserção de Código-Objeto (OCI) para inserir instruções de verificação antes de cada operação da memória. No IRIX, o Purify efetua a instrumentação do arquivo executável e salva-o com um novo nome.

Após a instrumentação, execute o programa instrumentado. Por exemplo:

% a.out

No IRIX, digite: a.out.pure 

À medida que você testa o programa instrumentado, o Purify exibe erros em tempo de execução no Purify Viewer. Quando você sair do programa, o Purify informará os vazamentos de memória.

Para reunir dados de cobertura de código à medida que você purificar o programa, adicione o comando purecov após o comando purify na linha de compilação/vínculo. Os dados de cobertura mostram as partes do código que foram e que não foram testadas.

Dica: Além de usar o Purify interativamente, você também poderá incorporá-lo aos scripts de teste, arquivos de instruções e arquivos batch para executar testes automatizados. 

Para obter mais informações, procure os seguintes tópicos no índice da Ajuda on-line do Purify:

  • basic steps
  • running programs
  • makefiles and scripts
  • purecoverage

2. Analisar as mensagens de erro do Purify

O segundo passo na purificação do código é analisar as mensagens de erro.

Cada mensagem de erro do Purify é iniciada por um acrônimo de três letras que a resume. Por exemplo, uma mensagem iniciada por ABR indica um erro de Leitura de Limites de Matriz. Para obter uma lista completa de mensagens de erro do Purify e suas descrições, consulte a Ajuda on-line do Purify.

O formato condensado de resumo do Purify Viewer facilita o exame das mensagens de erro, a identificação de erros graves e a avaliação do estado do programa de forma imediata. Em um programa extenso que gere centenas de mensagens de erro, você poderá usar as supressões do Purify para enfocar rapidamente os erros mais graves.

As mensagens do Purify são expandidas para mostrar informações de diagnóstico detalhadas como, por exemplo, a cadeia de chamada de função que leva ao erro e, se você tiver compilado o programa usando a opção -g, o Purify apontará o local exato do erro no código-fonte. Como o Purify detecta erros de acesso no momento em que ocorrem, ele ajuda a identificar, compreender e eliminar erros de acesso à memória e vazamentos de memória difíceis de serem encontrados.

É possível personalizar a maneira como o Purify trata os dados de erro. Por exemplo, você poderá especificar se o Purify registrará e exibirá tipos específicos de mensagens e também poderá especificar o tamanho da cadeia de chamada de função registrado para detectar erros e alocações.

Dica: Ao executar o Purify como parte de seus testes noturnos, você poderá salvar automaticamente a saída dele em um arquivo de visão (.pv) sem exibir o Viewer. Na manhã seguinte, abra o arquivo de visão salvo no Purify Viewer e analise-o como faria normalmente. Basta digitar: purify -view a.out.pv. Você também poderá salvar a saída do Purify em um arquivo de visão do Viewer quando desejar analisá-lo posteriormente ou compartilhá-lo com colegas que tenham o Purify. 

Para obter mais informações, procure o seguinte no índice da Ajuda on-line do Purify:

  • suppressing messages
  • saving data
  • view files
  • options

Uso do depurador com o Purify

Você poderá executar o programa purificado diretamente no depurador para que quando o Purify localize um erro seja possível investigá-lo imediatamente. Você também poderá ativar o recurso de depuração just-in-time (JIT) do Purify para fazer com que o Purify inicie o depurador quando encontrar um erro. Esse recurso é útil para os erros que aparecem apenas ocasionalmente. Você poderá monitorar uma região da memória para detectar tipos específicos de acessos à memória definindo um ponto de observação do Purify nessa região. Os pontos de observação mais convenientes e mais fáceis de usar do que os pontos de observação do depurador.

Para obter mais informações, procure os seguintes tópicos no índice da Ajuda on-line do Purify:

  • JIT debugging
  • watchpoints

Uso de funções API do Purify

Você poderá chamar funções API do Purify a partir do código-fonte e a partir do depurador para obter um controle maior sobre a verificação de erros do Purify. Ao chamar funções API do Purify a partir do depurador, você obterá um controle adicional sem modificar seu código-fonte. É possível usar essas funções para verificar o estado da memória e para procurar vazamentos do descritor de arquivos e da memória.

Para obter mais informações, procure o tópico API functions no índice da Ajuda on-line do Purify.

3. Corrigir os erros e executar novamente o programa 

O terceiro e último passo na purificação do código é corrigir os erros e executar novamente o programa.

Para corrigir os erros, clique na ferramenta Edit. O Purify abrirá o código-fonte no editor, no local exato do erro, deixando-o pronto para correção.

Após corrigir o erro, recompile o programa e execute-o novamente com o Purify. O Purify exibirá os resultados da nova execução no mesmo Viewer para que você possa verificar a correção comparando os novos resultados com os da execução anterior.

Repita o ciclo de instrumentação e execução do programa, análise e correção de erros até que o programa seja executado sem erros.

Uso do Purify com outras Ferramentas de Software da Rational

Use o Purify com o Rational PureCoverage para certificar-se de que você está purificando todo o código. Se seu ambiente de desenvolvimento incluir um sistema de gerenciamento de configuração como o Rational ClearCase, você poderá usar a barra de ferramentas Purify para verificar os arquivos de forma detalhada diretamente a partir do Purify Viewer. Se o Rational ClearQuest, a ferramenta de controle de defeitos de Software da Rational, estiver instalada no local que você se encontra e no seu caminho, você poderá iniciá-la diretamente a partir do Purify Viewer.



Copyright  (c) 1987 - 2001 Rational Software Corporation


Exibir o Rational Unified Process usando quadros

Rational Unified Process