¿Hay alguna alternativa a valgrind en Mac OS X Mountain Lion y Mavericks para detectar fugas de memoria para aplicaciones C/C++?
osx-mountain-lion osx-mavericks (3)
Solía usar valgrind
para detectar fugas de memoria para mis aplicaciones C / C ++ en Mac OS X 10.6 (Snow Leopard) y 10.7 (Lion), pero creo que no es compatible con lanzamientos recientes como 10.8 (Mountain Lion) y 10.9 (Mavericks) cuando actualicé mi sistema operativo. ¿Hay algo más como valgrind
que pueda instalarse en Mac OS X 10.9?
Además de los instrumentos que @Charlie_Burns menciona más arriba, también está el analizador estático que puede informarle acerca de algunas de estas cosas simplemente analizando su código. En su proyecto de Xcode, simplemente seleccione "Analizar" en el menú "Producto". Invoca el analizador estático clang
. Creo que también puedes utilizar clang
directamente desde la línea de comandos si quieres, aunque yo no he hecho eso.
En la línea de comando, también tiene acceso al comando de leaks
y al comando dtrace
.
El 2013-11-01, el equipo de valgrind
anunció Valgrind 3.9.0:
Nos complace anunciar un nuevo lanzamiento de Valgrind, versión 3.9.0, disponible en valgrind .
3.9.0 es una publicación de características con muchas mejoras y la colección habitual de correcciones de errores. Esta versión agrega soporte para MIPS64 / Linux, instrucciones de Intel AVX2 e instrucciones POWER8. Se agregó el soporte de DFP para S390. El soporte inicial para la memoria transaccional de hardware se ha agregado para las plataformas Intel y POWER. Se ha mejorado la compatibilidad con Mac OS X 10.8 (Mountain Lion). La precisión de Memcheck en el código vectorizado se ha mejorado.
Queda por ver si el soporte mejorado de Mountain Lion significa que funciona bien para los Mavericks. Menciona que el soporte solo es para código de 64 bits.
[... el tiempo pasa ... las descargas suceden ... se alzan las esperanzas ... se intenta la configuración ... las esperanzas se desvanecen ...]
Urgh!
...
checking build system type... x86_64-apple-darwin13.0.0
checking host system type... x86_64-apple-darwin13.0.0
checking for a supported CPU... ok (x86_64)
checking for a 64-bit only build... no
checking for a 32-bit only build... no
checking for a supported OS... ok (darwin13.0.0)
checking for the kernel version... unsupported (13.0.0)
configure: error: Valgrind works on Darwin 10.x and 11.x (Mac OS X 10.6/7)
Mountain Lion se basa en Darwin 12.x; Mavericks se basa en Darwin 13.x. No estoy seguro acerca de los mensajes en los mensajes de error, pero fuera de la caja, Valgrind 3.9.0 no compila en OS X Mavericks.
Para que lo sepas, puede que no tengas que esperar mucho para ver a Valgrind trabajando en Mac 10.9 aka Maverick. Como ha habido algún éxito según este informe de errores .
En mi opinión, actualmente (hasta el 15 de noviembre de 2013) no hay alternativas de Valgrind para Mac. Sin embargo, hay algunos a los que hay que prestarle atención, a saber, Clang que tiene tanto AddressSanitizer (funciona en macs actuales) como MemorySanitizer (macs aún no soportados).
Hay sugerencias para usar los Instrumentos de Xcode, pero no me pareció útil en absoluto.