Pergunta

Isso pode não parecer uma pergunta de programação, mas lida inerentemente com o código.

Eu tenho um código de teste seguinte, que tem erros óbvios como índice de matriz fora dos limites, vazamento de memória:-

#include "stdio.h"
#include "stdlib.h"
main()
{
   int i;
   char *ptr;
   ptr = (char*)malloc(5);
   for(i=0;i<10;i++)
   {
      ptr[i]=(char)i;
   }

}

Este código é construído em um MS-visual Studio 2008.

Estou tentando usar o racional Purify (versão 7.0) para identificar erros de tempo de execução, vazamentos de memória no meu código. Depois de ler algumas dicas sobre como criar código para uso em Purify, eu fiz abaixo das coisas nas configurações do projeto MSVS-2008:-

1.) Desativar o link incremental 2.) Sinalização do compilador de informações de depuração é /zi

3.) Defina a opção Linker - "Verificação básica do tempo de execução para valorizar o padrão.

4.) Adicionado uma opção de vinculador extra /corrigida: Não.

5.) Build Config é depuração, nenhuma otimização ativada.

Então eu construo e pego o exe. Eu uso esse exe para executar em Purify para que ele instrumente o mesmo. Mas a janela de saída em Purify após executar/instrumentar esse exe não mostra erros sobre vazamento de memória.

A janela Purify Output mostra a saída de diferentes binários (meu arquivo EXE e algumas outras DLLs do sistema) que ela foi instrumentada, executada. Mas na saída onde mostra dados sobre meu exe, não há mensagem de erro.

Meu sentimento é que estou cometendo um erro ao oferecer opções de compilação/vinculador ao criar o EXE no MS-VS 2008. Ou o formato executável gerado não é compatível/compreensível por Purify?

1.) O que poderia estar errado aqui? Que mais opções eu poderia precisar ao construir o exe?

2.) O meu processo de uso do Purify está correto ou estou perdendo alguma coisa? Como posso ser o Purify para mostrar todos os erros do meu programa depois de fazer a análise de tempo de execução?

3.) Existe qualquer outra ferramenta (licença gratuita/comercial) que possa detectar vazamentos de memória, arranhar erros de encadernação, uso de ponteiros não inicializados, variáveis, corrupção de memória etc. fazendo a análise de tempo de execução do código C.

Desculpe pelo correio longo, mas teve que ficar claro.

obrigado.

-DE ANÚNCIOS

Foi útil?

Solução

Depois de tentar furiosamente muitas coisas, lendo na internet, descobri o soln. por esta

1) Adicione uma nova variável de ambiente como:

Nome = ibm_rational_purify_enable_selective

Vale = 1

2) Além das configurações do projeto MS Visual Studio que mencionei no OP, é necessário abaixo a configuração -

C /c ++-> geração de código = biblioteca de tempo de execução-> depuração multi-threaded /mtd

E quando você executar o executável em Purify, você deve clicar em Configurar seletivo, selecione seu exe.

Então, quando você executar, deve colelar as informações relacionadas ao erro necessário.

-DE ANÚNCIOS

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