2010-04-15 5 views
10

¿Alguien sabe de un generador de perfiles y detector de fugas que funcionará con el código VS2010? Preferiblemente uno que se ejecuta en Win7.Detector de perfil/detección de fuga VS2010

He buscado aquí y en google. He encontrado un detector de fugas que funciona (Validador de memoria) pero no estoy muy impresionado. Por un lado, muestra un montón de filtraciones de menú y cosas que estoy bastante seguro de que no son reales. También probé GlowCode, pero es SOLO un generador de perfiles y se niega a instalar en win7.

Solía ​​usar AQtime. Tenía todo lo que necesitaba, detección de fuga de memoria/recursos, creación de perfiles de varias cosas, análisis estático, etc. Desafortunadamente ahora da resultados falsos.

Mi principal problema inmediato es que VS2010 dice que hay filtraciones en un programa que no tenía ninguno en VS2005. Estoy casi seguro de que son falsos positivos, pero parece que no puedo encontrar una buena herramienta para verificar esto. Memory Validator no muestra los mismos y el informe de filtraciones de VS no parece racional.

+0

quizás sería útil hacer una evaluación de Parallel Studio de Intel que está disponible para 32 y para plataformas de 64 bits. –

Respuesta

1

Personalmente, soy aficionado a DevPartner. Si trabajas en una gran compañía, tal vez puedas convencerlos de que paguen por la gran licencia. Es caro, pero es muy resistente.

0

he usado varias alternativas comerciales y, aunque pueden dar resultados fantásticos, sino que también a menudo simplemente dejan de trabajar debido a razones desconocidas:

  • Cantidad Racional: puesta del producto para perfiles de rendimiento, pero no lograron liberar nueva versiones durante varios años, y a menudo (en mi caso) el software a menudo se negó a trabajar
  • AQTime: también muy bueno (menos que la Cantidad racional) pero también a veces se niega a trabajar por razones desconocidas.
  • validador Rendimiento: igual

En los últimos años he regresado a la forma bastante cruda de muestreo de la aplicación. Esto no es tan perfecto como usar instrumentación, pero es mucho más rápido, se puede ejecutar en cualquier aplicación y siempre funciona. Mi favorito es "Muy soñoliento" (http://www.codersnotes.com/sleepy) pero también Luke StackWalker (http://lukestackwalker.sourceforge.net/) es bastante bueno. Debido a que las aplicaciones se pueden ejecutar inmediatamente y sin una desaceleración notable, el ciclo de "cambio de aplicación, perfil" es muy corto y eficiente.

Para encontrar fugas de memoria, hay varias herramientas en Windows que puede usar. Una vez más, están lejos de ser perfectos, y con frecuencia solo pueden investigar aplicaciones en ejecución desde el exterior, no simplemente informando filtraciones al final de la aplicación. Busque las "Herramientas de depuración de Microsoft" (UMDH, LeakDiag, gflags). Personalmente, me resulta mucho más fácil simplemente escribir mi propio administrador de memoria, y dejar que informe las filtraciones al final de la aplicación. No es tan difícil de escribir. Lo que tienes que hacer es:

  • aplicar la nueva rectificación y supresión de los operadores (creo que se debe implementar 4 nuevo y 4 borrar los operadores)
  • En la implementación de la nueva, conseguir la pila de llamadas (busque StackWalk) y almacenar esto con la memoria asignada.
  • Cree una clase que inicie su administrador de memoria en el constructor e informe todas las fugas (incluida la pila de llamadas) en el destructor.
  • Crea una variable global de ese tipo de clase. Podría ser necesario convertirlo en una variable global especial utilizando un #pragma (init_seg).
0

No sabe cómo enlazar a este, que anteriormente he publicado en respuesta a una pregunta similar:

Puede utilizar umdh. exe para capturar y comparar instantáneas del proceso antes y después de que ocurra la filtración. Esto funciona mejor con los binarios de Debug, pero es viable con Release, siempre que los paths de símbolos estén correctamente configurados: le dará los callstacks de memoria asignados entre la primera y la segunda instantánea.

http://support.microsoft.com/kb/268343

Este enfoque tiene la ventaja de ser libre.

3

Noah, como menciona Ori, DevPartner Studio de Micro Focus tiene detección de fugas y otras características de perfil de tiempo de ejecución. A diferencia de los altos precios que DPS tenía en Compuware, ahora puede obtener una licencia solo para los perfiladores de tiempo de ejecución y no para todo el paquete si eso es lo que necesita. Enchufe desvergonzado: trabajo en el equipo DevPartner. Nuestro soporte de aplicaciones de 64 bits sale en la versión 10.5 el 4 de febrero de 2011. Busque las últimas noticias y las descargas de eval en http://www.DevPartner.com.