Pregunta

Estaba buscando en Valgrind para ayudar a mejorar mi codificación / depuración de C cuando descubrí que es solo para Linux: no tengo otra necesidad o interés en mover mi sistema operativo a Linux, así que me preguntaba si hay un programa igualmente bueno para Windows.

¿Fue útil?

Solución

Algunas herramientas comerciales más buenas:

Otros consejos

Como señaló jakobengblom2, valgrind tiene un juego de herramientas. Dependiendo de cuál está hablando, hay diferentes contrapartes de Windows. Solo mencionaré OSS o herramientas gratuitas aquí.

1. MemCheck:

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

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

También he usado UMDH ( http://support.microsoft.com/kb/268343) y me pareció silencioso, útil y fácil de configurar. Funciona desde Win2000 a Win7.

AppVerifier es una herramienta imprescindible para desarrolladores de código nativo de Windows, su "memoria" corrector hace un trabajo similar 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 & # 8482; El analizador de rendimiento es gratis: 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 heap 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 creación de perfiles de errores de caché L2, pero no tan bueno y fácil de usar como Cachegrind.

5. DRD:

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

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

(Chromium usa esto para verificar la versión de Windows en busca de errores de memoria; consulte   build.chromium.org y mira las cascadas experimentales o de memoria, y busca vino.

También hay Dr. Memory, ver   dynamorio.org/drmemory.html

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

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

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

lea este artículo para obtener más detalles

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

Pruebe DUMA

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

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

En combinación con Visual Studio, generalmente uso Visual Leak Detector o simplemente _CrtDumpMemoryLeaks (), que es una API de win32 llamada. Ambos no son nada sofisticados, pero hacen el trabajo.

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 , solo trabajé con una versión 5.x y, a pesar de algunos problemas al adjuntar a un proceso que necesitaba depurar, funcionó bastante bien.

Me ha encantado Memory Validator , de una compañía llamada Software Verificación.

Viusual Studio puede ayudar a detectar pérdidas de memoria. Consulte Consejos y trucos de Microsoft Visual C ++ - > " Fugas de memoria " sección. Consulte también esta publicación en SO

Aunque el rastreo real solo es posible con Team Edtion de Visual Studio.

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

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

¿Califica Detector de fugas de memoria de Jochen Kalmbach ?

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

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

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

¿Qué tal el Purify ?

Pruebe el producto Intel Inspector XE que puede ayudarlo a detectar problemas de memoria y subprocesos: http://software.intel.com/en-us/articles/intel-inspector-xe/

¿Quizás CodeSnitch sería algo que buscas? http://www.entrek.com/codesnitch.html

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

Más o menos todos los Profilers incluyen la comprobación de pérdidas de memoria y le muestran la pila cuando se asignó la memoria.

Puedo recomendar Intels Parallel Inspector . Fácil de usar y no necesita recompilación. La versión de prueba tiene una duración de 30 días.

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

Compuware DevPartner (también conocido como BoundsChecker) en contraste necesita una "instrumentación" más lenta volver a compilar y la aplicación también se ejecuta más lentamente al buscar errores. Y BoundsChecker no puede funcionar con evsrions de 64 bits en absoluto. Renunciamos a esa herramienta.

La mejor herramienta que he usado es DevPartner BoundsChecker - no es gratis pero tiene un período de evaluación.

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

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

Si no tienes miedo de mingw, aquí hay algunos enlaces (algunos podrían funcionar con MSVC) ... http://betterlogic.com/roger/?p=1140

Estamos completando una Herramienta de comprobación de seguridad de la memoria para Windows, que maneja GCC y Micrsoft Visual C (todavía no C ++), y está buscando beta testers.

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

Hoy encontré este proyecto de SF:

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

Están portando valgrind a Windows. Probablemente en varios años tendremos un valgrind confiable en Windows.

Echa un vistazo a esta pregunta: ¿Hay un buen sustituto de Valgrind para Windows? ? . Aunque se pide un sustituto general para valgrind, se trata principalmente de detectores de fugas de memoria y no de detecciones de condiciones de carrera.

Utilicé Insure ++, que hace un trabajo excelente para encontrar fugas / corrupciones de memoria de c ++ y muchos otros errores, como variables no inicializadas, errores de puntero, cadenas, etc., también hace visual "Cobertura de código". y el uso de la memoria de tiempo de ejecución, etc., lo que le da más confianza a su código. Puede probarlo para la versión de prueba.

Es posible que desee leer lo que Mozilla está haciendo con respecto a las pérdidas de memoria. Una herramienta en su caja de herramientas es el recolector de basura Hans Boehm utilizado como detector de fuga de memoria .

Puede intentar RuntimeChecker prueba de IBM Purify trial ..

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

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

Simplemente escriba esto en la parte superior de todos sus archivos cpp. Esto detectará fugas de memoria de su aplicación cuando c detenga la ejecución de la depuración y las enumerará en la ventana de salida. Al hacer doble clic en una línea de pérdidas de memoria, se resaltará la línea donde se asigna la memoria y nunca se libera. Esto puede ayudarlo: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top