2011-09-20 17 views
8

Potrzebuję narzędzia, które pomoże mi znaleźć wycieki pamięci w programie c w podobny sposób, jak robi to valgrind. Powinien dowiedzieć się, kiedy program nadpisuje pamięć, której nie powinien (np. Błędnie obliczyć indeks tablicy). Dowiedziałem się, że istnieje narzędzie do przecieków wraz z aplikacją graficzną.Narzędzie Valgrind podobne do Mac OS 10.7 (Lion)

Jednak myślę, że może po prostu znaleźć pamięć przydzieloną nowym (lub malloc), która nie została wydana i nie jest już dostępna. Nauczyłem się również, że valgrind powinien działać na starszych wersjach (10.5 i 10.6), ale używam lwa (10.7).

+0

Jak napisano powyżej, nie działa (jeszcze) z lwem (10.7). – Nils

+1

@Mat: Lion (10.7) nie jest jeszcze wspierany, jak wskazywał OP, pracuje nad nim od czerwca, ale nie wydaje się to takie proste: https://bugs.kde.org/show_bug.cgi?id= 275168 – Matthieu

+0

Z twojego linku @Matthieu wygląda na to, że ludzie zaczęli działać. –

Odpowiedz

4

Chciałbym użyć narzędzia programisty XCode MallocDebug. Trzeba było to instalowane z Xcode w /Developer folderu

Alternatywnie, można uruchomić aplikację w gdb i używać rodzimych rejestrowanie malloc uruchamiając

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

Następnie można użyj /usr/bin/leaks i /usr/bin/malloc_history, aby znaleźć oczywiste wycieki.

+0

Przetestowałem to w przypadku, w którym przypadkowo pomnożyłem 2 vary w dostępie do tablicy zamiast ich dodawać. w/o MallocStackLoggingNoCompact wyjście bt jest bezużyteczne, ale po ustawieniu, że powiedział mi dokładną linię! Thx za podpowiedź! – Nils

+0

Jednak nie mogłem znaleźć MallocDebug w 10.7. Również rekin zniknął .. :( – Nils

+0

Wygląda na to, że MallocDebug został zastąpiony przez instrument "Wycieki" w aplikacji "Instruments" – Seth

8

Valgrind 3.7.0 (wydany 5 th Listopad 2011) su pakuje Lwa. http://valgrind.org

+0

Jest również prosty do pobrania, zbudowania i użycia. –

Powiązane problemy