Zainstaluj Valgrind w Ubuntu 20.04:
Pakiet Valgrind może podkreślić ostrzeżenie lub błąd na powładzie, podczas gdy może nie wyświetlać się z kompilatorem C ++ na terminalu Ubuntu. Dlatego musimy go najpierw zainstalować. Musisz więc otworzyć terminal Ubuntu 20.04 z klawiszem skrótu „Ctrl+alt+t”. Do tej pory w tym celu wykorzystywane jest polecenie pakietu Apt Ubuntu w tym celu, jak pokazano poniżej.
$ sudo apt Zainstaluj valgrind
Kod błędu może być postrzegany jako „skok warunkowy lub ruch zależy od niezainicjowanej wartości (wartości)”, co wskazuje, że Valgrind odkrył, że wynik programu zależy od niepodpisanego przechowywania. Zawiadomienie „użycie niezainicjowanej wartości wielkości N” może również pojawiać się od czasu do czasu. Punkt, w którym kod opiera się na zmiennej niepodpisanej, zostanie zgłoszony przez Valgrind. Nie wskazuje to na błąd, jeśli niezainicjowane wartości zostaną przeniesione i klonowane w pamięci, o ile aplikacja nie polega na nich. Trudno jest zlokalizować usterkę, ponieważ może ona być daleko od strony Valgrind. Możesz uzyskać pomoc z poleceniami ValGrind za pomocą polecenia pomocy i słowa kluczowego „ValGrind”, aby użyć ich na powładzie. Wyjście polecenia pomocy otworzy instrukcję podręcznika Ubuntu dla Valgrind, jak można już zobaczyć na załączonym zdjęciu poniżej. W swoich poleceniach Valgrind użyj dowolnego z tych argumentów.
$ valgrind - -Help
Przykład 01:
Będziemy więc patrzeć na maksymalne możliwe przykłady, które mogą spowodować, że Valgrind pokazuje ten błąd lub ostrzeżenie na terminalu, korzystając z polecenia Valgrind. Tak więc utworzyliśmy plik dla kodu C ++ za pomocą instrukcji „dotyk” Linux. Ten nowo utworzony plik został zlokalizowany w folderze domowym i otwarty w edytorze Nano, aby zrobić kod.
$ touch err.CC
$ nano err.CC
Na przykład rozpoczynaliśmy kod z iostream i przestrzenią nazw C++. Są one konieczne, aby jeden kod działał. W ramach funkcji main () po prostu zadeklarowaliśmy zmienną całkowitą, aw następnym wierszu zwiększyliśmy zmienną z 3 bez inicjowania. Instrukcja Cout jest wykorzystywana do wyświetlania zmiennej przyrostowej „x”.
#włączać
za pomocą przestrzeni nazw Std;
int main ()
int x;
x += 3; // błąd
Cout << x << endl;
Do tej pory nie można było znaleźć błędu w niektórych sytuacjach, takich jak poniżej w wykonywaniu tego kodu z prostym kompilatorem G ++ języka C ++. Wyświetli również przyrostową wartość, jak pokazano.
$ g ++ err.CC
$ ./A.na zewnątrz
Z drugiej strony Valgrind pozwala nam zwiększyć lub przydzielić x+3 na „x”, ponieważ pozorna wydajność programu nie zostanie zmieniona, dopóki nie spróbujesz wydrukować zawartości wektora. Valgrind pokaże tylko numer linii, na którym do tej pory znaleziono błąd skoku warunkowego i sprawić, że zrozumiesz, że gdzieś używasz zmiennej niepodpisanej. Jednak ustalenie, która niezainicjowana zmienna lub dlaczego nie została zainicjowana, może wymagać znacznej pracy kryminalistycznej.
$ valgrind -tool = memCheck -leak -CHeck = Tak ./błądzić.CC
Przykład 02:
Rzućmy okiem na inny program z innym sposobem na uzyskanie tego samego błędu. Uwzględniliśmy standardową przestrzeń nazw „STD” dla C ++ i iostream za pośrednictwem „#Include” w tym programie. Skomentowaliśmy deklarację metody Main () i zadeklarowaliśmy zmienną całkowitą „x.„Pętla„ while ”służy do sprawdzenia warunku i wykonania zmniejszenia.
#włączać
za pomocą przestrzeni nazw Std;
int main ()
int x;
while (x> 4) // błąd
X--;
//
Nie tylko sprawi, że Valgrind spowoduje błąd „Warunkowy skok lub ruch zależy od niezainicjowanej wartości”, ale spowoduje również błąd z G ++, jak pokazano poniżej. Aby rozwiązać ten problem, musisz porzucić skomentowany obszar kodu i uruchomić.
$ g ++ err.CC
Wniosek:
Chodziło o błąd Valgrind: „Warunkowy skok lub ruch zależy od niezainicjowanej wartości” w kodzie C ++. Utrzymaliśmy sekwencję, instalując Valgrind, otwierając jego instrukcję pomocy, tworząc kod C ++ i wykonując go z G ++ i Valgrind na powłoce, aby zrozumieć ją lepiej i rozwiązać. Dodaliśmy dwie unikalne ilustracje w celu lepszego zrozumienia tego błędu. Wszystkie te przykłady są wdrażane na Ubuntu 20.04 System. Możesz jednak wykorzystać dowolny inny dystrybucja. Uważamy, że będzie to naprawdę korzystne.