c tutorial Existe um bom substituto do Valgrind para o Windows?




valgrind tutorial ubuntu (24)

Eu tenho amado o Memory Validator , de uma empresa chamada Software Verification.

Eu estava olhando para Valgrind para ajudar a melhorar minha codificação / depuração C quando descobri que é apenas para Linux - não tenho outra necessidade ou interesse em mover meu sistema operacional para o Linux, então eu queria saber se há um programa igualmente bom para o Windows.



O ambiente de desenvolvimento para o Windows que você está usando pode conter suas próprias ferramentas. O Visual Studio, por exemplo, permite detectar e isolar vazamentos de memória em seus programas


O Viusual Studio pode ajudar a detectar vazamentos de memória. Consulte Dicas e truques do Microsoft Visual C ++ -> seção "Vazamentos de memória". Veja também este post em SO

Embora o rastreamento real só seja possível com o Team Edtion do Visual Studio.



Em combinação com o Visual Studio eu geralmente uso http://vld.codeplex.com/ ou simplesmente _CrtDumpMemoryLeaks (), que é uma chamada win32 api. Ambos são nada extravagante, mas eles fazem o trabalho.


Estamos apenas concluindo uma ferramenta de verificação de segurança de memória para o Windows, que lida com o GCC e o Micrsoft Visual C (ainda sem o C ++), e estamos procurando testadores Beta.

EDITAR 12 de junho de 2011: Não mais beta, agora produção para GCC e Microsoft Visual Studio C.



Eu tive a chance de usar o Compuware DevPartner Studio no passado e isso foi muito bom, mas é bem caro. Uma solução mais barata poderia ser o GlowCode , eu apenas trabalhei com uma versão 5.xe, apesar de alguns problemas em anexar a um processo que eu precisei depurar, funcionou muito bem.


Se você está desenvolvendo com o Borland / CodeGear / Embarcadero C ++ Builder, você pode usar o CodeGuard.


Você pode tentar o teste RuntimeChecker ot no teste do Purify .

Uma solução gratuita seria usar o seguinte código no Visual Studio:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

Basta escrever isso no topo de todos os seus arquivos cpp. Isso detectará vazamentos de memória de seu aplicativo ao interromper a execução de depuração e listá-los na janela de saída. Clicar duas vezes em uma linha de vazamentos de memória mostrará a linha onde a memória está alocada e nunca liberada. Isso pode ajudá-lo: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml


Consulte o link " Ferramentas de teste de origem " na página Recursos de ferramenta de teste e teste de controle de qualidade de software para obter uma lista de ferramentas semelhantes.

Eu usei BoundsChecker, DevPartner Studio e Intel V-Tune no passado para perfil. Eu gostei do V-Tune o melhor; Você pode emular vários chipsets da Intel e fornecer dicas sobre como otimizar essa plataforma.



Eu usei Insure ++ que faz excelente trabalho em encontrar vazamentos de memória c + + / corrupções e muitos outros erros como variáveis ​​não inicializadas, erros de ponteiro, seqüências de caracteres etc., Ele também faz visual "cobertura de código" e uso de memória de tempo de execução etc. seu código .. Você pode experimentá-lo para a versão de trilha ..



A melhor ferramenta que já usei foi o DevPartner BoundsChecker - não é grátis, mas tem um período de avaliação.


Para Visual C ++, tente Visual Leak Detector . Quando eu usei, ele detectou um vazamento de memória de uma new chamada e retornou a linha real no código-fonte do vazamento. A versão mais recente pode ser encontrada em http://vld.codeplex.com/ .



Como jakobengblom2 apontou, valgrind tem um conjunto de ferramentas. Dependendo de qual você está falando, existem diferentes partes do contador de janelas. Eu mencionarei apenas o OSS ou ferramentas gratuitas aqui.

1. MemCheck:

Dr. memória. É uma ferramenta relativamente nova, funciona muito bem no Windows 7. Meu recurso favorito é agrupar as pilhas de alocação dos mesmos vazamentos no relatório.

http://code.google.com/p/drmemory/

Eu também usei UMDH ( http://support.microsoft.com/kb/268343 ) e achei muito útil e fácil de configurar. Trabalha do Win2000 ao Win7.

AppVerifier é um deve ter swissknife para desenvolvedores de código nativo do Windows, seu verificador de "memória" faz trabalho semelhante http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

2. Callgrind:

Meu favorito é verysleepy ( http://www.codersnotes.com/sleepy ) É pequeno, mas muito útil e fácil de usar.

Se você precisar de mais recursos, o Analisador de Desempenho AMD CodeAnalyst ™ é gratuito: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

As ferramentas de Análise de Desempenho do Windows são gratuitas da Microsoft, não são muito fáceis de usar, mas podem fazer o trabalho se você estiver disposto a gastar o tempo. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx Download: http://msdn.microsoft.com/en-us/performance/cc752957

3. Maciço:

Ferramentas gratuitas semelhantes (não exatamente iguais) no Windows são:

VMMap da sysinternals: http://technet.microsoft.com/en-us/sysinternals/dd535533

comando! heap no windbg: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html

4. Cachegrind:

As Ferramentas de Desempenho do Windows acima mencionadas têm certo nível de capacidade de criação de perfil de falta de cache L2, mas não tão boas e fáceis de usar quanto o Cachegrind.

5. DRD:

Ainda não encontrei nada livre e tão poderoso no Windows, a única ferramenta gratuita para Windows que eu acho que é um pouco próxima é o verificador de "bloqueio" no AppVerifier: http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx


A biblioteca de teste de reforço pode detectar vazamentos de memória.


Outra ferramenta de memória para sua lista: o Validador de Memória .

Não é livre, mas nem de longe tão caro quanto Purify ou Boundschecker.


Mais ou menos todos os Profilers incluem verificação de vazamentos de memória e mostrar a pilha quando a memória foi alocada.

Eu posso recomendar o Intels Parallel Inspector . Simples de usar e não é necessária recompilação. A versão experimental é executada por 30 dias.

GlowCode e AtromatedQA também incluem tais capacidades. Todos eles oferecem testes gratuitos.

O Compuware DevPartner (também conhecido como BoundsChecker) em Contrast precisa de uma recompilação "instrumentação" mais lenta e o aplicativo também é executado mais lentamente ao verificar erros. E o BoundsChecker não pode trabalhar com 64 Bits. Nós desistimos dessa ferramenta.



eu gostaria de listar algumas ferramentas, a esperança será útil

leia este article para mais detalhes

  1. Purificar
  2. Verificador de limites
  3. Coverity (basicamente é um analisador de código, mas, ele pegará vazamento de memória na estática)
  4. Código Glow
  5. dmalloc
  6. ccmalloc
  7. NJAMD
  8. YAMD
  9. Valgrind
  10. mpatrol
  11. Segure ++




valgrind