Szukałem w Valgrind, aby poprawić kodowanie / debugowanie C, kiedy odkryłem, że jest to tylko dla Linuksa - nie mam innej potrzeby ani zainteresowania przeniesieniem mojego systemu operacyjnego do Linuxa, więc zastanawiałem się, czy istnieje równie dobry program dla Windows.
210
Odpowiedzi:
Więcej dobrych narzędzi komercyjnych:
źródło
Jak zauważył jakobengblom2, valgrind ma zestaw narzędzi. W zależności od tego, o którym mówisz, są różne części liczników okien. Wspomnę tu tylko o OSS lub bezpłatnych narzędziach.
1. MemCheck:
Dr. Memory. Jest to stosunkowo nowe narzędzie, które działa bardzo dobrze w systemie Windows 7. Moją ulubioną funkcją jest to, że grupuje te same stosy alokacji wycieków w raporcie.
http://code.google.com/p/drmemory/
Użyłem również UMDH ( http://support.microsoft.com/kb/268343 ) i uznałem, że jest cichy użyteczny i łatwy w konfiguracji. Działa od Win2000 do Win7.
AppVerifier to program typu „swissknife” dla programistów natywnych dla systemu Windows, jego moduł sprawdzania „pamięci” wykonuje podobną pracę http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx
2. Callgrind:
Moim ulubionym jest bardzo śpiący ( http://www.codersnotes.com/sleepy ) Jest mały, ale bardzo przydatny i łatwy w użyciu.
Jeśli potrzebujesz więcej funkcji, AMD CodeAnalyst ™ Performance Analyzer jest darmowy: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx
Narzędzia analizy wydajności systemu Windows są wolne od firmy Microsoft, niezbyt łatwe w użyciu, ale mogą wykonać zadanie, jeśli chcesz spędzić czas. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx Pobierz: http://msdn.microsoft.com/en-us/performance / cc752957
3. Masyw:
Podobne (niezbyt dokładne dopasowanie) darmowe narzędzia w systemie Windows to:
VMMap z sysinternals: http://technet.microsoft.com/en-us/sysinternals/dd535533
! polecenie polecenia w windbg: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html
4. Cachegrind:
Wyżej wspomniane narzędzia wydajności systemu Windows mają pewien poziom możliwości profilowania pamięci podręcznej L2, ale nie są tak dobre i łatwe w użyciu jak Cachegrind.
5. DRD:
Nie znalazłem jeszcze nic darmowego i tak potężnego w systemie Windows, jedynym darmowym narzędziem dla systemu Windows, które jest nieco blisko, jest moduł sprawdzania blokady w AppVerifier: http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
źródło
Dlaczego nie użyć Valgrind + Wine do debugowania aplikacji Windows? Zobacz http://wiki.winehq.org/Wine_and_Valgrind
(Chromium używa tego do sprawdzania wersji systemu Windows pod kątem błędów pamięci; zobacz build.chromium.org i spójrz na wodospady eksperymentalne lub pamięciowe i szukaj wina.)
Jest też Dr. Memory, patrz dynamorio.org/drmemory.html
źródło
W przypadku Visual C ++ wypróbuj Visual Leak Detector . Kiedy go użyłem, wykrył wyciek pamięci z
new
połączenia i zwrócił rzeczywistą linię w kodzie źródłowym przecieku. Najnowsze wydanie można znaleźć na stronie http://vld.codeplex.com/ .źródło
Środowisko programistyczne dla używanego systemu Windows może zawierać własne narzędzia. Na przykład program Visual Studio umożliwia wykrywanie i izolowanie wycieków pamięci w programach
źródło
Chciałbym wymienić jakieś narzędzie, mam nadzieję, że się przyda
przeczytaj ten artykuł, aby uzyskać więcej szczegółów
źródło
Wypróbuj DUMA
źródło
Narzędzie do debugowania dla systemu Windows zawiera Pageheap.exe. Jest bezpłatny i jest w zasadzie niestandardowym przydziałem / dezalokatorem pamięci.
Zobacz http://support.microsoft.com/kb/286470
źródło
gflags
+gdb
(od mingw) pomocny w diagnozie.W połączeniu z Visual Studio zazwyczaj używam Visual Leak Detector lub po prostu _CrtDumpMemoryLeaks (), która jest wywołaniem interfejsu API systemu Windows. Oba nie są niczym wyjątkowym, ale wykonują zadanie.
źródło
W przeszłości miałem okazję korzystać z Compuware DevPartner Studio i to było naprawdę dobre, ale jest dość drogie. Tańszym rozwiązaniem może być GlowCode , właśnie pracowałem z wersją 5.x i pomimo pewnych problemów z dołączeniem się do procesu wymaganego do debugowania, działał całkiem dobrze.
źródło
Uwielbiam Memory Validator , firmy o nazwie Software Verification.
źródło
Viusual Studio może pomóc w samodzielnym wykrywaniu wycieków pamięci. Zobacz porady i wskazówki dotyczące Microsoft Visual C ++ -> sekcja „Wycieki pamięci”. Zobacz także ten post w SO
Chociaż prawdziwe śledzenie jest możliwe tylko w Team Edtion Visual Studio.
źródło
Zobacz link do „ Source Test Tools ” na stronie Software QA Testing and Test Tool Resources, aby uzyskać listę podobnych narzędzi.
W przeszłości korzystałem z BoundsChecker, DevPartner Studio i Intel V-Tune do profilowania. V-Tune najbardziej mi się podobało; możesz emulować różne mikroukłady Intela, a to da ci wskazówki, jak zoptymalizować dla tej platformy.
źródło
Czy wykrywacz wycieków pamięci Jochena Kalmbacha kwalifikuje się?
PS: Adres URL najnowszej wersji jest ukryty gdzieś w wątku komentarza do artykułu.
źródło
LeakDiag, UMDH, App Verifier, DebugDiag, to wszystkie przydatne narzędzia do poprawy niezawodności kodu i wykrywania wycieków pamięci.
źródło
Biblioteka testu wzmocnienia może wykryć wycieki pamięci.
źródło
Co powiesz na Purify ?
źródło
Wypróbuj produkt Intel Inspector XE, który może pomóc wykryć zarówno problemy z pamięcią, jak i wątkami: http://software.intel.com/en-us/articles/intel-inspector-xe/
źródło
Może CodeSnitch byłby czymś, czego szukasz? http://www.entrek.com/codesnitch.html
źródło
Jeśli programujesz w Borland / CodeGear / Embarcadero C ++ Builder, możesz użyć CodeGuard.
źródło
Mniej więcej wszystkie Profilery obejmują sprawdzanie wycieków pamięci i pokazują stos, gdy pamięć została przydzielona.
Mogę polecić Intels Parallel Inspector . Prosty w użyciu i nie wymaga ponownej kompilacji. Wersja testowa działa przez 30 dni.
GlowCode i AtromatedQA obejmują również takie zdolności. Wszystkie oferują bezpłatne wersje próbne.
Compuware DevPartner (inaczej BoundsChecker) w programie Contrast wymaga spowolnionej ponownej kompilacji „oprzyrządowania”, a aplikacja działa wolniej podczas sprawdzania błędów. A BoundsChecker w ogóle nie może działać z wersjami 64-bitowymi. Zrezygnowaliśmy z tego narzędzia.
źródło
Najlepszym narzędziem, jakiego kiedykolwiek użyłem, jest DevPartner BoundsChecker - nie jest darmowy, ale ma okres próbny .
źródło
Kolejne narzędzie pamięci dla twojej listy: Memory Validator .
Nie za darmo, ale nigdzie nie tak drogo jak Purify czy Boundschecker.
źródło
Jeśli nie boisz się mingw, oto kilka linków (niektóre mogą współpracować z MSVC) ... http://betterlogic.com/roger/?p=1140
źródło
Właśnie uzupełniamy narzędzie do sprawdzania bezpieczeństwa pamięci dla systemu Windows, które obsługuje GCC i Micrsoft Visual C (jeszcze nie C ++) i szukamy wersji beta.
EDYCJA 12 czerwca 2011: Już nie Beta, teraz produkcja dla GCC i Microsoft Visual Studio C.
źródło
Dzisiaj znalazłem ten projekt SF:
http://sourceforge.net/p/valgrind4win/wiki/Home/
Przenoszą valgrind do Windows. Prawdopodobnie za kilka lat będziemy mieli niezawodny valgrind na oknach.
źródło
Sprawdź to pytanie: Czy istnieje dobry zamiennik Valgrind dla systemu Windows? . Chociaż pytany jest ogólny zamiennik valgrind, omawia głównie detektory wycieków pamięci, a nie detekcje warunków wyścigu.
źródło
Użyłem Insure ++, który doskonale sprawdza się w wykrywaniu wycieków / uszkodzeń pamięci c ++ i wielu innych błędów, takich jak niezainicjowane zmienne, błędy wskaźnika, ciągi znaków itp. Ponadto zapewnia wizualne „pokrycie kodu” i użycie pamięci w czasie wykonywania itp., Które dają większą pewność na swój kod .. Możesz wypróbować dla wersji trailowej ..
źródło
Możesz przeczytać, co robi Mozilla w zakresie wycieków pamięci. Jednym z narzędzi w przyborniku jest pojemnik na śmieci Hans Boehm wykorzystywany jako wykrywacz wycieków pamięci.
źródło
Możesz wypróbować wersję próbną programu RuntimeChecker lub wersję próbną produktu IBM Purify .
Bezpłatnym rozwiązaniem byłoby użycie następującego kodu w Visual Studio:
Po prostu napisz to na górze wszystkich plików CPP. Wykryje to wycieki pamięci z aplikacji po zatrzymaniu uruchamiania debugowania i wyświetli listę w oknie wyjściowym. Dwukrotne kliknięcie linii wycieków pamięci podświetli linię, w której pamięć jest przydzielana i nigdy nie zwalniana. To może ci pomóc: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
źródło