Después de llevar unos años trabajando, a ratos libres, he decidido liberar de una vez por todas MEMTRACE.

MEMTRACE es una herramienta que permite detectar memory leaks y buffer under/overun en aplicaciones C/C++.

Soporta tanto C como C++ bajo diferentes plataformas y compiladores.

Acabar el proyecto es una tarea de titanes, todavía faltan un montón de funciones por controlar y no se si llegaré a terminarlo algún día. Actualmente estoy demasiado ocupado con otros asuntos, y mi vida se aleja cada vez más de esta tecnología.

Por diseño, todo es extremadamente simple, lo cual no quiere decir que sea accidental, sino que lo fui evolucionando en esa linea de trabajo. La simplicidad facilita la mantenibilidad, la portabilidad y el rendimiento. Si había una forma más fácil de hacer algo, se tenía que hacer de esa forma. El conjunto aplica esta filosofía en todos sus puntos funcionales. Desde la forma de controlar los bloques de memoria, hasta el mapeo de funciones. La idea general, es decir, la forma en que se interceptan las funciones de C estándar para poder supervisarlas, no fue fácil de descubrir, pero ahora que está el código ya escrito, es trivial de ver.

En esta última versión 1.91 se controlan: malloc, calloc, free, realloc, strdup, strcpy, strcmp, strcat, memcpy, memcmp, y assert. Si compilamos código C++, se le añaden los operadores new, new[], delete y delete[].

Aunque he puesto gran énfasis en la portabilidad del código, esto no quiere decir que se haya descuidado el rendimiento de las funciones.

Incluye herramientas adicionales para la ayuda en la depuración de código (función log, y assert mejorado).

En ningún momento pretende reemplazar a herramientas comerciales de ayuda a la depuración, ya que estas ofrecen generalmente muchas prestaciones que MEMTRACE. Por contra, MEMTRACE es gratuito, es eficiente, y soporta un gran número de entornos operativos distintos.

Teneis toda la información que de momento he escrito (en inglés) y su descarga en: nikkhokkho.sourceforge.net/static.php?page=static041113-234407.