Pergunta

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

Foi útil?

Solução

Alguns mais boas ferramentas comerciais:

Outras dicas

Como jakobengblom2 fora pontas, valgrind tem um terno de ferramentas. Dependendo qual você está falando há diferentes janelas contrariar partes. Mencionarei apenas OSS ou ferramentas gratuitas aqui.

1. Memcheck:

Dr. Memória. É uma ferramenta relativamente nova, funciona muito bem no Windows 7. O meu recurso favorito é que pilhas de alocação agrupa os mesmos vazamentos no relatório.

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

Eu usei também UMDH ( http://support.microsoft.com/kb/268343) e se tranqüila útil e fácil de configurar. Ele funciona a partir Win2000 para Win7.

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

2. Callgrind:

O meu favorito é verysleepy ( http://www.codersnotes.com/sleepy ) Ele é pequena mas muito útil e fácil de usar.

Se você precisar de mais recursos, AMD CodeAnalyst ™ Performance Analyzer está livre: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

As ferramentas de análise de desempenho do Windows é gratuito da Microsoft, não é muito fácil de usar, mas pode começar o trabalho feito se você estiver disposto a gastar o tempo. http: // blogs .microsoft.co.il / blogs / sasha / Arquivo / 2008/03/15 / Xperf-windows-desempenho-toolkit.aspx Baixar: http://msdn.microsoft.com/en-us/performance/cc752957

3. Massif:

Semelhante (não jogo bastante exato) ferramentas gratuitas nas janelas são:

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

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

4. Cachegrind:

Acima mencionados Ferramentas de Desempenho do Windows tem certo nível de L2 Cache Miss profiling capacidade, mas não tão bom e fácil de usar como Cachegrind.

5. DRD:

não encontrei nada de graça e tão poderoso no Windows, no entanto, a ferramenta só é livre para windows posso achar que é um pouco perto é o "bloqueio" verificador em AppVerifier: http://msdn.microsoft.com/en -us / library / dd371695% 28v = VS.85% 29.aspx

Por que não usar Valgrind + Wine para depurar seu aplicativo do Windows? Vejo http://wiki.winehq.org/Wine_and_Valgrind

(Chromium usa isso para verificar a versão do Windows para erros de memória, ver build.chromium.org e olhar para as experimentais ou de memória cachoeiras, e procurar vinho.)

Há também Dr. Memória, consulte dynamorio.org/drmemory.html

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

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

eu gostaria de listar alguns ferramenta, espero que seja útil

artigo para mais detalhes

  1. Purify
  2. Checker Bounds
  3. Coverity (basicamente o seu analisador de código de um, mas, ele vai pegar vazamento de memória estática)
  4. Código brilho
  5. Dmalloc
  6. ccmalloc
  7. NJAMD
  8. YAMD
  9. Valgrind
  10. mpatrol
  11. Assegurar ++

Tente DUMA

Há Pageheap.exe parte das ferramentas de depuração para Windows. É gratuito e é basicamente uma memória personalizado alocador / desalocador.

Consulte http://support.microsoft.com/kb/286470

Em combinação com o Visual Studio Eu geralmente uso Detector Visual Leak ou simplesmente _CrtDumpMemoryLeaks () que é uma API do Win32 ligar. Ambos são nada sofisticados, mas eles fazer o trabalho.

Eu tive a chance de usar Compuware DevPartner Estúdio no passado e que foi muito bom, mas é muito caro. A solução mais barata pode ser GlowCode , eu só trabalhou com uma versão 5.x e, apesar de alguns problemas em anexar a um processo i necessário para depuração, que funcionou muito bem.

Eu tenho amado Memória Validador , de uma empresa chamada Software verificação.

Viusual Studio pode ajudar a detectar vazamentos de memória em si. Veja dicas Microsoft Visual C ++ e Truques -> seção "vazamentos de memória". Veja também este post no SO

Embora verdadeiro traçado só é possível com a Equipe Edtion do Visual Studio.

Veja o link "Ferramentas test Fonte " sobre o Software QA Testing e página ferramenta de teste Recursos para uma lista de ferramentas similares.

Eu usei BoundsChecker, DevPartner Studio e Intel V-Tune no passado para perfilar. Eu gostava V-Tune o melhor; você pode emular vários chipsets Intel e que iria dar-lhe dicas sobre como otimizar para essa plataforma.

O Memória Leak Detector de Jochen Kalmbach qualificar?

PS:. O URL para a versão mais recente está enterrado em algum lugar no segmento comentário do artigo

LeakDiag, UMDH, App Verificador, DebugDiag, são ferramentas úteis para melhorar a robustez do código e encontrar vazamentos de memória.

A biblioteca Teste Boost pode detectar vazamentos de memória.

Como sobre o Purify ?

Tente produto Inspector XE da Intel que pode ajudá-lo a detectar tanto problemas de segmentação de memória e: http://software.intel.com/en-us/articles/intel-inspector-xe/

Talvez CodeSnitch seria algo que você está depois? http://www.entrek.com/codesnitch.html

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

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

Posso recomendar da Intel Parallel Inspector . Simples de usar e sem recompilação necessário. A versão de teste é executado por 30 dias.

GlowCode e AtromatedQA também incluem tais capabilites. Eles todos os ensaios livres oferecem.

Compuware DevPartner (aka BoundsChecker) em contraste precisa de um abrandou recompilação "instrumentação" e a aplicação também executa mais lento durante a verificação de erros. E BoundsChecker não podem trabalhar com 64 evsrions pouco disso tudo. Nós desistiu de essa ferramenta.

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

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

Não é grátis, mas longe de ser tão caro como Purify ou boundschecker.

Se você não tem medo de mingw, aqui estão alguns links (alguns trabalho poderia com MSVC) ... http://betterlogic.com/roger/?p=1140

Eu encontrei este projecto SF hoje:

http://sourceforge.net/p/valgrind4win/wiki/Home/

Eles estão portando valgrind para o Windows. Provavelmente em vários anos teremos uma valgrind confiável no Windows.

Confira esta pergunta: Existe uma boa Valgrind substituto para o Windows ? . Embora substituto geral para valgrind é solicitado, ele discute, principalmente, detectores de vazamento de memória e não condições de corrida detecções.

Eu costumava segurar ++ que faz excelente trabalho em encontrar c ++ vazamentos de memória / corrupções e muitos outros bugs como variáveis ??não inicializadas, erros de ponteiro, cordas etc., Ele também faz visual "Cobertura de código" e uso de memória tempo de execução etc .. que dão mais confiante em seu código .. Você pode experimentá-lo para a versão trail ..

Você pode querer ler o que Mozilla está fazendo sobre vazamentos de memória. Uma ferramenta em sua caixa de ferramentas é o coletor de lixo Hans Boehm usado como detector de vazamento de memória .

Você pode dar uma chance para RuntimeChecker julgamento ot para IBM Purify julgamento ..

Uma solução livre 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. Isto irá detectar vazamentos de memória de sua aplicação whenc parar depuração prazo e incluí-los na janela de saída. Clicando duas vezes sobre uma linha de vazamentos de memória vai higlight-lhe a linha onde a memória é alocada e nunca lançado. Isso pode ajudá-lo: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml

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