Comment obtenir la pile d'appels complète de Valgrind?
- Je exécuter Valgrind avec les paramètres suivants:
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
Des fuites de mémoire log, je vois des messages d'erreur avec plein de trace de la pile jusqu'à la page principale, mais certains messages ressembler à ce qui suit:
==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==
Comment puis-je obtenir le plein trace de la pile pour ces erreurs?
source d'informationauteur Michael Lukin
Vous devez vous connecter pour publier un commentaire.
Le plein de trace de pile exigera des symboles de débogage pour les bibliothèques/exécutables qui peuvent être impliqués dans une fuite (et dans les limites fixées par
--num-callers
).Si vous êtes à la construction de n'importe quel d'entre eux vous-même, vous devez spécifier le
-g
drapeau de gcc (ou le drapeau correspondant dans tout autre compilateur).Notez que valgrind n'est pas infaillible, et ils peuvent parfois manquer de fuites ou d'être incapable de fournir les traces de pile (surtout si vous êtes en utilisant des fils, ou compliqué
class
implémentations).Pour les bibliothèques sans les informations de débogage, la trace de la pile d'arrêt de la bibliothèque.
Pour un outil gratuit, valgrind est très bien ce qu'il fait, mais il y a une raison endroits comme IBM peut vendre profils de mémoire pour beaucoup d'argent.