Quiero comprobar un proceso prolongado para detectar fugas de memoria con valgrind. Sospecho que la pérdida de memoria que estoy buscando podría suceder solo después de varias horas de ejecución. Puedo ejecutar la aplicación en valgrind y obtener el registro valgrind muy bien, pero hacerlo significa que tengo que salir de la aplicación y volver a iniciarla de nuevo para una nueva sesión valgrind para la que todavía tendría que esperar varias horas. ¿Es posible mantener valgrind y la aplicación ejecutándose y aún obtener datos valgrind (parciales) en cualquier punto durante la ejecución?¿Puede valorar los informes parciales de salida sin tener que salir de la aplicación perfilada?
5
A
Respuesta
8
Puede hacerlo utilizando el Valgrind gdbserver and GDB.
En resumen, se inicia el programa con valgrind como de costumbre, pero con el interruptor --vgdb=yes
:
$ valgrind --tool=memcheck --vgdb=yes ./a.out
En otra sesión, se empieza GDB en el mismo ejecutable, y se conectan a valgrind. A continuación, puede emitir comandos valgrind:
$ gdb ./a.out
...
(gdb) target remote | vgdb
....
(gdb) monitor leak_check full reachable any
==8677== 32 bytes in 1 blocks are definitely lost in loss record 1 of 2
==8677== at 0x4C28E3D: malloc (vg_replace_malloc.c:263)
==8677== by 0x400591: foo (in /home/me/tmp/a.out)
==8677== by 0x4005A7: main (in /home/me/tmp/a.out)
==8677==
==8677== 32 bytes in 1 blocks are definitely lost in loss record 2 of 2
==8677== at 0x4C28E3D: malloc (vg_replace_malloc.c:263)
==8677== by 0x400591: foo (in /home/me/tmp/a.out)
==8677== by 0x4005AC: main (in /home/me/tmp/a.out)
==8677==
==8677== LEAK SUMMARY:
==8677== definitely lost: 64 bytes in 2 blocks
==8677== indirectly lost: 0 bytes in 0 blocks
==8677== possibly lost: 0 bytes in 0 blocks
==8677== still reachable: 0 bytes in 0 blocks
==8677== suppressed: 0 bytes in 0 blocks
==8677==
(gdb)
Consulte el manual para obtener una lista de comandos, here para memcheck.
Cuestiones relacionadas
- 1. ¿Cómo cambiar la URL en el navegador sin tener que salir de la página?
- 2. ¿Cerrar archivo sin salir de la aplicación VIM?
- 3. java swing cerrar la ventana sin salir de la aplicación
- 4. gdb: programa de salida sin salir de gdb
- 5. Grails: clasificación de salida de lista sin tener que tener un SortedSet o modelo comparable?
- 6. Objetivo C: enviar correo electrónico sin salir de la aplicación
- 7. Salir de la aplicación en iOS 4.0
- 8. ¿Cómo salir de Python sin rastreo?
- 9. Salir de la aplicación en Qt
- 10. Salida eficiente de la aplicación multiproceso (detalles)
- 11. Cadenas literales sin tener que escapar de los caracteres especiales?
- 12. ¿Puede un archivo por lotes capturar los códigos de salida de los comandos que invoca?
- 13. ¿Cómo hacer que los usuarios de la aplicación iPhone envíen informes de fallos?
- 14. ¿Es "==" en Ruby siempre valorar la igualdad?
- 15. Aplicación de Android al salir Evento
- 16. Haciendo sin compromisos parciales la "vía Mercurial"
- 17. ¿cuál es la longitud máxima que puede tener el nombre de la aplicación para iPad?
- 18. Cómo cerrar todos los ejecutores al salir de una aplicación?
- 19. Borrar la caché de la aplicación al salir en android
- 20. Currículum de Lion al cerrar documentos sin salir de la aplicación
- 21. ¿Cómo salir de un método sin salir del programa?
- 22. Detener todos los servicios iniciados en la aplicación Cerrar/Salir
- 23. ¿Cómo guardar las opciones de la aplicación antes de salir? .
- 24. abstractproperties excluir de la cobertura de los informes
- 25. ¿Utiliza ModalPopupExtender sin tener que establecer TargetControlID?
- 26. Actualizar/reiniciar la sesión de PowerShell sin salir de
- 27. opción de Subversion para mostrar los resultados de la actualización sin tener que actualizar
- 28. libuv: ¿cómo salir correctamente de la aplicación de un error?
- 29. Eliminar singletons en la salida de la aplicación con Ninject
- 30. Limpieza antes de salir de la aplicación Java