2011-10-05 20 views
5

Tenemos una aplicación desarrollada en C# .NET Framework 2.0 que está interactuando con un componente COM (que está desarrollado en código no administrado de C++). A veces, la aplicación arroja una excepción de falta de memoria (bastante difícil de reproducir).Herramientas para detectar fugas de memoria para C# y aplicación C++ no administrada

Nos gustaría tener una herramienta para averiguar si tenemos fugas de memoria e identificar la causa raíz de la excepción de memoria. ¿Qué herramientas sería mejor para esto? Una herramienta ideal podría conectarse a un proceso en ejecución en la máquina de un usuario para hacer análisis.

Hemos intentado el generador de perfiles de memoria .NET pero eso solo se puede conectar a un proceso de ejecución de .NET framework 4.0. También usamos Memory Validator (detector de fugas de memoria C++); sin embargo, esta herramienta no nos dio suficientes pistas cuando se adjunta a un proceso en ejecución.

Respuesta

0

Para las pruebas más básicas, que podrían utilizar sysinternals procexp.exe para comprobar si realmente tiene un problema de pérdida de memoria. Una gran cantidad de código COM arrojaría memoria insuficiente, cuando se encuentra un puntero nulo donde no se esperaba uno, por lo que el código de excepción puede ser engañoso.

2

Respuesta corta

¿Ha intentado Microsoft Application Verifier? Es una herramienta muy pequeña, me atrevería a decir minimalista, pero sorprendentemente poderosa.

Respuesta larga

Durante mi investigación de los problemas de pérdida de memoria, he utilizado Microsoft Windbg, Microsoft Application Verifier y he evaluado a fondo Red Gate ANTS Performance Profiler (que he recomendar a comprar, y yo he visto personalmente recomendado para comprar por varios desarrolladores en muchos equipos diferentes), DotTrace y .Net Memory Profiler.

Definitivamente, es valioso obtener y aprender a usar una o más de estas herramientas, tal vez instaladas en un entorno de desarrollo virtual alojado en una máquina virtual agrupada entre los desarrolladores del equipo.

Si evalúas esas y cualquier otra herramienta, el gran punto de venta para mí sería la capacidad de investigar los volcados de memoria tomados con Windbg, ya que estos son los más fáciles de obtener incluso para los clientes.

Cuestiones relacionadas