Valgrind jest zależny od systemu operacyjnego, ponieważ można go wykonywać tylko w systemie operacyjnym Linux. Valgrind to zbiór narzędzi do wykrywania pamięci, które są open source. Jest powszechnie używany i mocniejszy niż inne narzędzia, takie jak Memwatch, MTRACE itp., które wykonują te same funkcje co Valgrind. Chociaż C ++ jest bardzo potężnym i użytecznym językiem programowania, wymaga dużej mocy do debugowania i wykonania. Czasami występują błędy pamięci, co jest konkretnym problemem. Podobnie istnieje inny błąd, który jest wyciekiem pamięci. Valgrind to konkretny program, który pomaga rozwiązać oba problemy.
Instalacja Valgrind
Podczas pracy nad platformą Linux potrzebnych jest wiele nowych programów do wykonania niektórych konkretnych programów w tym systemie operacyjnym. Na przykład, korzystając z terminalu, potrzebujesz SNAP, APT, aby przeprowadzić wiele innych instalacji oprogramowania. Podobnie ValGrind jest również instalowany na terminalu za pomocą polecenia „sudo-apt”.
$ sudo apt Zainstaluj valgrindZajmie to trochę czasu, ale ostatecznie jest pomyślnie zainstalowany w twoim systemie.
Niektóre instrukcje dotyczące użycia Valgrind
Program lub aplikacja, która ma zostać przetestowana, jest dodawany przez kompilator, który kompiluje program. „-G” jest używane, ponieważ jest również kompilatorem programów C ++.
Wynikająca wartość rekordu wykrywania jest wyświetlana jako wyjście na terminalu. Oprócz tego wynikowa wartość można zapisać w pliku.
Jeśli chcesz więcej instrukcji lub potrzebujesz pomocy w użyciu określonego polecenia, możesz wykonać Valgrind -H, co daje interfejs terminali pomocy.
Używamy określonego formatu do wskazania wykrywania wycieków w pamięci: # Valgrind -tool = memCheck -leak -CHeck = pełny ./plik, -leak -creck = pełny
Zasada wykrywania pamięci Valgrind
Valgrind używa środowiska wirtualnego do wdrażania programów. Program lub aplikacja, która ma zostać przetestowana w tym praktycznie utworzonym środowisku. Funkcją Valgrind jest monitorowanie aplikacji, jej użycia i wydania pamięci w czasie rzeczywistym, a także rejestrowanie informacji, które mogą pokazać pewne nieprawidłowości w pamięci. W Valgrind istnieje komponent wykrywania pamięci, memCheck. Obsługuje wiele funkcji. Niektóre z nich są wymienione poniżej:
Memcheck może sprawdzić wiele problemów, ponieważ jest to najpotężniejszy element Valgrind.
Niezainteresowane pamięć
Ten problem występuje podczas pisania programu przy użyciu dowolnej pojedynczej zmiennej lub tablicy. I zapomniałeś zadeklarować i zainicjować tablicę na początku. I w momencie użycia nie jesteś świadomy tego problemu zapominania. Ten błąd jest identyfikowany przez Valgrind. Aby wyjaśnić przykład, wzięliśmy program w C++.
Pierwszym krokiem jest użycie biblioteki STD.
# włączaćTutaj widać, że wartość zmiennej nie jest przypisana i jest podawana do tablicy, i podobnie wartości te są drukowane za pomocą „for Loop”. Tutaj zapomnieliśmy przypisać wartość do zmiennej. Błąd wystąpił, gdy pusta tablica zostanie wybrana do wyświetlania wartości.
Teraz wykonamy ten kod na terminalu Ubuntu. Użyjemy kompilatora „G ++” do skompilowania kodu. W przeciwieństwie do prostego kodu C, tutaj użyjemy słowa kluczowego „Valgrind's.
$ gcc -Wall -pedantic -g plik 1.plik C -O1Teraz to polecenie przyniesie część ze strony z pamięcią. Najpierw otrzymamy opis „memCheck”. Następnie pokazano szczegóły dotyczące niezainicjowanej wartości. W tej części widać, że numer linii jest wspomniany, gdzie wystąpił błąd. Tutaj numer linii to „11”.
Wykrywanie wycieków pamięci
Załóżmy, że masz program zawierający Malloc () No Free (). To doprowadzi do wycieku pamięci. Istnieje przykład kodu źródłowego C ++.
W programie głównym wskaźnik typu znaków jest używany z funkcją Malloc. Nawet niewielki program jest również odpowiedzialny za identyfikację wycieków pamięci. Teraz zobaczymy wyjście.
Treść wyjściowa pasuje do wyjścia poprzedniego w niektórych aspektach, więc wyświetliliśmy tylko część wycieków pamięci, aby całkowicie się skupić.
Teraz skompilujemy powyższy kod i wykonamy go za pośrednictwem polecenia.
$ ValGrind--tool = memCheck-leak-check = tak --Track-origins = tak ./File1To polecenie pokaże następujące wyniki. Możesz tutaj zauważyć, że wyświetlane są liczby bajtów, które zostały utracone. Linia, w której wystąpił błąd, jest również wyświetlana w ostatnim wierszu wynikowych wartości.
Wynik ten zawiera również podsumowanie wycieku, które wyjaśnia całkowite bajty utracone bezpośrednio lub pośrednio; Niezależnie od opisu, wyjaśniono go krótko w wyniku.
Nieprawidłowe wykrywanie dostępu do pamięci
Czasami takie warunki są napotykane, gdy kod źródłowy zawiera błąd, wskaźnik, którego używamy do dostępu poza lokalizacją pamięci. Ten błąd jest wykrywany przez MemCheck.
Ptr [11] = „z”;W tym wyżej wymienionym kodzie widać, że użyliśmy wskaźnika „PTR”, który próbuje uzyskać dostęp do lokalizacji pamięci, która przekracza granicę.
Wyjście pokazuje, że rozmiar jest nieprawidłowy. Jak ogłosiliśmy szereg wielkości [10]. A wskaźnik uzyskuje dostęp do gniazda 11, który jest poza zasięgiem, który zadeklarowaliśmy.
Wiszące wskaźniki wykrywania operacji
To są te wskazówki, które wskazują na zwolnioną pamięć.
Tutaj najpierw uwolnimy przestrzeń; Nawet po uwolnieniu przestrzeni kod próbuje uzyskać dostęp do pamięci, którą wskazuje wskaźnik.
Wniosek
„Jak używać Valgrind C ++” jest zaimplementowany na terminalu Linux. Obejmuje podstawową koncepcję, typy valgrind, jego instalację, instrukcje użytkowania i niektóre główne funkcje jego komponentów. Memcheck, jako główny składnik Valgrind, wykrywa błąd w programie, niezależnie od tego, czy jest tak. Wszystkie wspomniane przykłady pokazują działanie Valgrind, w tym Malloc (). Ten artykuł będzie korzystny w odniesieniu do pracy i zasad Valgrind w środowisku programowania C++.