Installer valgrind i Ubuntu 20.04:
Valgrind -pakken kan fremheve en advarsel eller feil på skallet mens den kanskje ikke vises med C ++ -kompilatoren på Ubuntu -terminalen. Derfor må vi installere det først. Så du må åpne terminalen til Ubuntu 20.04 med snarveisnøkkelen “Ctrl+Alt+T”. Ubuntus APT -pakkekommando brukes til dette formålet så langt i skallet, som vist nedenfor.
$ sudo apt install valgrind
Feilkoden kan sees på som "betinget hopp eller flytt. Varselet "bruk av en uinitialisert verdi av størrelse n" kan også vises av og til. Poenget som koden er avhengig av den usignerte variabelen, vil bli rapportert av valgrind. Dette vil ikke indikere en feil hvis uinitialiserte verdier blir flyttet og klonet rundt i lagring så langt applikasjonen ikke er avhengige av dem. Det er vanskelig å finne feilen fordi den kan være langt fjernt fra siden Valgrind -rapporter. Du kan få hjelp med valgrind -kommandoer ved hjelp av hjelpekommandoen og nøkkelordet "Valgrind" for å bruke dem på skallet ditt. Utgangen for hjelpekommandoen vil åpne for Ubuntu's Manual for Valgrind, som du allerede kan se på det vedlagte bildet nedenfor. Bruk noen av disse argumentene i valgrind -kommandoene dine.
$ VALGRIND -HELP
Eksempel 01:
Så vi vil se på de maksimale mulige eksemplene som kan føre til at Valgrind viser denne feilen eller advarselen på terminalen mens han bruker valgrind -kommandoen. Så vi har opprettet en fil for C ++ -kode ved hjelp av Linux “Touch” -instruksjon. Denne nyopprettede filen har vært lokalisert i hjemmemappen og åpnet i Nano -redigereren for å gjøre kode.
$ berøringsfeil.CC
$ nano feil.CC
For eksempel har vi startet koden med iostream og navneområdet til C++. Disse er nødvendige for å få en kode til å fungere. Innenfor en hovedfunksjon () har vi ganske enkelt erklært en heltallvariabel, og på neste linje har vi økt variabelen med 3 uten å initialisere den. COUT -uttalelsen brukes til å vise inkrementvariabelen “x” -verdien.
#inkludere
ved hjelp av navneområdet STD;
int main ()
int x;
x += 3; // Feil
cout << x << endl;
Det finnes ingen feil så langt i noen situasjoner som nedenfor for å utføre denne koden med en enkel G ++ kompilator av C ++ språk. Den vil også vise den økte verdien som vist.
$ g ++ feil.CC
$ ./en.ute
På den annen side tillater valgrind oss å øke eller tildele x+3 til “x” siden programmets tilsynelatende ytelse ikke blir endret før du prøver å skrive ut vektorens innhold. VALGRIND vil bare vise deg linjenummeret som betinget hoppfeil er funnet så langt og få deg til å forstå at du bruker en usignert variabel et sted. Å bestemme hvilken uinitialisert variabel eller hvorfor den ikke ble initialisert, kan imidlertid kreve betydelig rettsmedisinsk arbeid.
$ valgrind -tool = memCheck -LEAK -Check = ja ./feil.CC
Eksempel 02:
La oss se på et annet program med en annen måte å få den samme feilen. Vi har tatt med standard “STD” -navner for C ++, og iOstream via “#include” i dette programmet. Vi har kommentert Main () -metodedeklarasjonen og erklært en heltallvariabel “x.”" Mens "-løkken brukes til å sjekke en tilstand og utføre reduksjonen.
#inkludere
ved hjelp av navneområdet STD;
int main ()
int x;
mens (x> 4) // feil
x--;
//
Det vil ikke bare gjøre valgrind forårsaker feilen "betinget hopp eller bevegelse avhenger av uinitialisert verdi", men vil også forårsake en feil med G ++, som vist nedenfor. For å løse dette problemet, må du ukomne det kommenterte kodeområdet og kjøre det.
$ g ++ feil.CC
Konklusjon:
Dette handlet om Valgrind -feilen: “Betinget hopp eller trekk avhenger av uinitialisert verdi” i C ++ -kode. Vi har opprettholdt sekvensen ved å installere Valgrind, åpne manualen for hjelp, lage en C ++ -kode og utføre den med G ++ og Valgrind på skallet for å forstå det hele bedre og løse det. Vi har lagt til to unike illustrasjoner for en bedre forståelse av denne feilen. Alle disse eksemplene implementeres på Ubuntu 20.04 System. Du kan imidlertid bruke all annen distribusjon også. Vi tror at det vil være veldig gunstig.