usar como c windows debugging memory-leaks valgrind

como - ¿Hay un buen sustituto de Valgrind para Windows?



dr memory (30)

¿ El detector de fugas de memoria de Jochen Kalmbach califica?

PD: la URL de la última versión está oculta en algún lugar del hilo de comentarios del artículo.

Estaba descubriendo que Valgrind me ayudaba a mejorar la codificación / depuración de C cuando descubrí que era solo para Linux. No tengo ninguna otra necesidad o interés en mover mi sistema operativo a Linux, así que me preguntaba si existe un programa igualmente bueno para Windows.


¿Por qué no usar Valgrind + Wine para depurar su aplicación de Windows? Ver http://wiki.winehq.org/Wine_and_Valgrind

(Chromium lo utiliza para verificar errores de memoria en la versión de Windows; consulte build.chromium.org y observe las cataratas experimentales o de memoria, y busque vino).

También está el Dr. Memory, vea dynamorio.org/drmemory.html



Acabamos de completar una herramienta de comprobación de seguridad de la memoria para Windows, que maneja GCC y Micrsoft Visual C (todavía no C ++), y estamos buscando Beta Testers.

EDITAR 12 de junio de 2011: Ya no es Beta, ahora producción para GCC y Microsoft Visual Studio C.



Como jakobengblom2 señaló, valgrind tiene un conjunto de herramientas. Dependiendo de cuál esté hablando, hay diferentes ventanas en contra de las partes. Solo mencionaré OSS o herramientas gratuitas aquí.

1. MemCheck:

Dr. Memory. Es una herramienta relativamente nueva, funciona muy bien en Windows 7. Mi característica favorita es que agrupa las mismas pilas de asignación de fugas en el informe.

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

También usé UMDH ( http://support.microsoft.com/kb/268343 ) y me pareció bastante útil y fácil de configurar. Funciona desde Win2000 hasta Win7.

AppVerifier es una herramienta que debe tener swissknife para desarrolladores de código nativo de Windows, su verificador de "memoria" realiza tareas similares http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

2. Callgrind:

Mi favorito es verysleepy ( http://www.codersnotes.com/sleepy ) Es pequeño pero muy útil y fácil de usar.

Si necesita más funciones, AMD CodeAnalyst ™ Performance Analyzer es gratuito: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

Las herramientas de análisis de rendimiento de Windows son gratuitas de Microsoft, no son muy fáciles de usar pero pueden hacer el trabajo si está dispuesto a pasar el tiempo. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx Descargar: http://msdn.microsoft.com/en-us/performance/cc752957

3. Macizo:

Las herramientas gratuitas similares (no coinciden exactamente) en Windows son:

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

! comando del montón en windbg: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html

4. Cachegrind:

Las herramientas de rendimiento de Windows mencionadas anteriormente tienen cierto nivel de capacidad de falta de perfiles de caché L2, pero no tan buenas y fáciles de usar como Cachegrind.

5. DRD:

Todavía no he encontrado nada gratis y tan potente en Windows, la única herramienta gratuita para Windows que puedo encontrar que está ligeramente cerca es el verificador de "bloqueo" en AppVerifier: http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx


Consulte el enlace " Herramientas de prueba de origen " en la página de Recursos de herramientas de prueba y prueba de control de calidad del software para obtener una lista de herramientas similares.

He utilizado BoundsChecker, DevPartner Studio e Intel V-Tune en el pasado para crear perfiles. Me gustó lo mejor de V-Tune; Podría emular varios chipsets de Intel y le daría pistas sobre cómo optimizar para esa plataforma.



El entorno de desarrollo para Windows que está utilizando puede contener sus propias herramientas. Visual Studio, por ejemplo, le permite detectar y aislar fugas de memoria en sus programas


En combinación con Visual Studio, generalmente uso el http://vld.codeplex.com/ o simplemente _CrtDumpMemoryLeaks (), que es una llamada de la API Win32. Ambos no son nada lujoso, pero hacen el trabajo.



Es posible que desee leer lo que hace Mozilla con respecto a las fugas de memoria. Una herramienta en su caja de herramientas es el recolector de basura Hans Boehm utilizado como detector de fugas de memoria.


Hay una parte Pageheap.exe de las herramientas de depuración para Windows. Es gratis y es básicamente un asignador / desasignador de memoria personalizado.

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


La biblioteca Boost Test puede detectar pérdidas de memoria.



LeakDiag, UMDH, App Verifier, DebugDiag, son herramientas útiles para mejorar la robustez del código y detectar pérdidas de memoria.


Más o menos, todos los perfiladores incluyen la comprobación de fugas de memoria y le muestran la pila cuando se asignó la memoria.

Puedo recomendar Intels Parallel Inspector . Fácil de usar y sin necesidad de recompilación. La versión de prueba se ejecuta durante 30 días.

GlowCode y AtromatedQA también incluyen tales capacidades. Todos ellos ofrecen pruebas gratuitas.

Compuware DevPartner (también conocido como BoundsChecker) en Contrast necesita una recompilación de "instrumentación" más lenta y la aplicación también se ejecuta más lentamente al verificar errores. Y BoundsChecker no puede funcionar con versiones de 64 bits en absoluto. Nos dimos por vencidos con esa herramienta.


Me gustaría enumerar alguna herramienta, espero que sea útil.

lee este article para más detalles

  1. Purificar
  2. Verificador de límites
  3. Cobertura (básicamente es un analizador de código, pero detectará una pérdida de memoria en estática)
  4. Código de resplandor
  5. dmalloc
  6. ccmalloc
  7. NJAMD
  8. YAMD
  9. Valgrind
  10. mpatrol
  11. Asegurar ++


Otra herramienta de memoria para tu lista: Validador de memoria .

No es gratis, pero no es tan caro como Purify o Boundschecker.




Puede probar la RuntimeChecker prueba de RuntimeChecker o la RuntimeChecker prueba de Purify .

Una solución gratuita sería usar el siguiente código en Visual Studio:

#ifdef _DEBUG #define new DEBUG_NEW #endif

Solo escribe esto en la parte superior de todos tus archivos cpp. Esto detectará fugas de memoria de su aplicación al detener la ejecución de la depuración y las mostrará en la ventana de resultados. Al hacer doble clic en una línea de fugas de memoria, se resaltará la línea donde se asigna la memoria y nunca se libera. Esto puede ayudarlo a usted: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml



Si está desarrollando con Borland / CodeGear / Embarcadero C ++ Builder, puede usar CodeGuard.



Tuve la oportunidad de usar Compuware DevPartner Studio en el pasado y eso fue realmente bueno, pero es bastante caro. Una solución más barata podría ser GlowCode , acabo de trabajar con una versión 5.x y, a pesar de algunos problemas para adjuntar a un proceso que necesitaba depurar, funcionó bastante bien.


Utilicé Insure ++, que hace un excelente trabajo en la búsqueda de fugas / daños en la memoria de c ++ y muchos otros errores como variables no inicializadas, errores de puntero, cadenas, etc. su código ... Puede probarlo para la versión de camino ...



Para Visual C ++, pruebe el Detector de Fugas Visual . Cuando lo usé, detectó una pérdida de memoria de una new llamada y devolvió la línea real en el código fuente de la pérdida. La última versión se puede encontrar en http://vld.codeplex.com/ .