biegnę Valgrind z następującymi parametrami:Jak uzyskać pełny stos wywołań z Valgrind?
--leak-check=full --show-reachable=yes --leak-resolution=high --num-callers=100 --trace-children=yes
W wycieków pamięci zalogować, widzę jakieś komunikaty o błędach z pełnym stosem prześledzić aż do main, ale niektóre komunikaty wyglądają jak następuje:
==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==
Jak czy mogę uzyskać pełne śledzenie stosu tych błędów?
Ostatnia dostępna wersja Valgrind obsługuje tylko -num-callers do 50. Nie jest więc jasne, której wersji używasz. Powyższy ślad stosu wygląda na niekompletny. Może to być związane ze sposobem kompilacji aplikacji (np. Opcja -fomit-frame-pointer może utrudnić tworzenie śladu stosu) – phd
Bump. (robi stackoverflow "bump" posty?) Ten sam problem. Kompilowanie aplikacji za pomocą -g. Pokazuje możliwe wycieki pamięci ze śledzeniem stosu z malloc(), funkcją o nazwie malloc(), a następnie main(), pomijając wszystko pomiędzy, włączając funkcje w tym samym pliku co main(). ?? Widzę przykłady online, które nie mają tego limitu 3 klatek na stosie ... ?? Jakieś pomysły? – Samuel
Używam valgrind 3.8.1 na Ubuntu 13.10 i zobacz śledzenie stosu, które nie zawiera wszystkich wywołań pośrednich. Brak optymalizacji podczas kompilacji za pomocą gcc (lub może potrzebuję -Og lub coś takiego ...) – thoni56