memory leaks - leak - ¿Cómo obtener la pila de llamadas completa de Valgrind?
use valgrind to find memory leaks (1)
Ejecuto Valgrind con los siguientes parámetros:
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
En el registro de pérdidas de memoria, veo algunos mensajes de error con el seguimiento completo de la pila hasta el principal, pero algunos mensajes parecen los siguientes:
==3956== 1,999,140 (68,796 direct, 1,930,344 indirect) bytes in 5,733 blocks are definitely lost in loss record 8,842 of 8,845
==3956== at 0x4022AB8: malloc (vg_replace_malloc.c:207)
==3956==
¿Cómo puedo obtener el seguimiento completo de la pila para estos errores?
Obtener el seguimiento de pila completo requerirá símbolos de depuración para todas las bibliotecas / ejecutables que pueden estar involucradas en una fuga (y dentro de los límites establecidos por --num-callers
).
Si está construyendo uno de ellos usted mismo, debe especificar el indicador -g
en gcc (o el indicador correspondiente en cualquier otro compilador).
Tenga en cuenta que valgrind no es infalible y ocasionalmente puede perder pérdidas o no puede proporcionar rastros de pila completos (especialmente si está utilizando subprocesos o implementaciones de class
complicadas).
Para las bibliotecas sin información de depuración, el seguimiento de la pila se detendrá en esa biblioteca.
Para una herramienta gratuita, valgrind es muy bueno en lo que hace, pero hay una razón por la que lugares como IBM pueden vender perfiles de memoria por mucho dinero.