una tuberias subterranea scanner romper para invisibles fugas fuga enterradas detectar cómo como colorante casero aparato agua delphi memory-leaks
Fighting Memory Leaks for Dummies

delphi - tuberias - detectar fugas de agua sin romper



Cuál es la mejor herramienta para detectar fugas de memoria en Delphi (9)

¿Cuál es la mejor herramienta para detectar fugas de memoria?

Ambos gratuitos y no gratuitos.

Gracias


Es posible que desee echarle un vistazo a esta sesión de CodeRage 2: Fighting Memory Leaks for Dummies . Muestra principalmente cómo usar FastMM para prevenir / detectar pérdidas de memoria en Delphi. Fue para D2007 pero sigue siendo relevante para D2009.


FastMM es muy bueno. Sé 3 o 4 gerentes de memoria gratis para Delphi. Lleva menos de una hora verificarlos todos, ya que generalmente requieren solo 3 líneas de código para incrustarlos en el proyecto.


FastMM es un detector de fugas de memoria gratuito (fuente disponible), ya integrado en las últimas versiones de Delphi. Nunca tuve necesidad de otra cosa.

Es mucho mejor por cierto limitar las posibilidades de pérdidas de memoria al codificar, en lugar de encontrarlas más tarde. Algunos consejos:

Siempre use try y finally en su código para liberar objetos creados. Es mejor escribir este código de inmediato y luego escribir el código para usar los objetos. Aún mejor para hacer uso de la funcionalidad IDE como plantillas de código.

Solo use funciones que devuelvan objetos asignados dinámicamente cuando sea absolutamente necesario. En general, es mejor pasar objetos como parámetros que crearlos y devolverlos. Por ejemplo esto

procedure getChoices(var AChoices: TStrings);

sería mucho mejor que

function getChoices: TStrings;

ya que no hay posibilidad de que se filtre accidentalmente el objeto TStrings creado.



Recomendaría la versión completa de FastMM4 sobre la versión incluida en Delphi. La versión completa le brinda un informe completo y detallado que se registra en el archivo en lugar de la caja de diálogo. Combina esto con un ''memoryleak-logfile-differ'' diferente preparado para ti, todo listo para una bughunt saliente.


Siempre uso ReportMemoryLeaksOnShutdown: = (DebugHook <> 0); para que solo obtenga las filtraciones informadas si estoy depurando.

ps quería poner esto en un comentario, pero todavía no tengo los derechos ...


Usamos EurekaLog en nuestro trabajo en Delphi 7. Es un componente de controlador de excepción que proporciona información muy detallada sobre excepciones (incluidas las variables de entorno callstack!, Etc.) incluso para violaciones de acceso. Pero otra gran característica es que también se puede detectar un error en las pérdidas de memoria, que muestra la línea exacta de código donde se asignó la memoria / el objeto en primer lugar. Es un producto comercial, pero aún así lo recomendaría mucho.


Uso MadExcept porque es gratuito para uso personal.


AQTime es muy bueno. También hace otras cosas como perfilar para el rendimiento. Y no requiere ningún cambio en su código. Por supuesto, compilar con información de depuración ayuda a dar mejores resultados.