2011-09-20 8 views
8

Necesito una herramienta que me ayude a encontrar fugas de memoria en un programa c de forma similar a como lo hace valgrind. Se debe tener en cuenta que cuando un programa sobrescribe la memoria no debería (por ejemplo, al calcular mal un índice de matriz). Aprendí que existe la utilidad de fugas junto con la aplicación de instrumentos gráficos.Valgrind como herramienta en Mac OS 10.7 (Lion)

Sin embargo, creo que solo puede encontrar la memoria asignada con la nueva (o malloc) que no se lanzó y ya no es accesible. También aprendí que se supone que valgrind funciona en versiones anteriores (10.5 y 10.6), pero uso lion (10.7).

+0

Como está escrito anteriormente, (todavía) no funciona con lion (10.7). – Nils

+1

@Mat: Lion (10.7) aún no es compatible, como señaló OP, están trabajando en ello desde junio, pero no parece tan fácil: https://bugs.kde.org/show_bug.cgi?id= 275168 – Matthieu

+0

Desde su enlace @ Matthieu, parece que la gente lo ha conseguido. –

Respuesta

4

me gustaría utilizar la herramienta de desarrollo XCode MallocDebug. Usted debe tener esta instalado con XCode en su /desarrollador carpeta

Como alternativa, puede ejecutar su aplicación en GDB y utilizar el registro de malloc nativa mediante la ejecución de

% gdb <program name> 
(gdb) set env MallocStackLoggingNoCompact 1 
(gdb) run 

A continuación, puede utilizar /usr/bin/leaks y /usr/bin/malloc_history para encontrar fugas obvias

+0

Lo probé en un caso en el que accidentalmente multipliqué 2 vars en un acceso de matriz en lugar de agregarlos. sin MallocStackLoggingNoCompact, la salida bt es inútil, pero después de haber configurado eso, ¡me indicó la línea exacta! ¡Gracias por la pista! – Nils

+0

Sin embargo, no pude encontrar MallocDebug en 10.7. También se ha ido el tiburón .. :( – Nils

+0

Parece que MallocDebug ha sido reemplazado por el instrumento 'Leaks' en la aplicación' Instruments' – Seth

8

Valgrind 3.7.0 (estrenada 5 º noviembre de 2011) Do Patos Lion. http://valgrind.org

+0

Es sencillo descargarlo, compilarlo y usarlo también. –

Cuestiones relacionadas