Se og få tilgang til tråder i GDB

Se og få tilgang til tråder i GDB
Et annet navn for en feilsøking ville være et feilsøkingsverktøy. Ved å oppdage kodeproblemene i forskjellige faser av et operativsystem eller en applikasjonsoppretting, anses det for å være et dataprogram som kan forbedre prosessen med å bygge en programvare. En prøvekjøring kan undersøkes av visse feilsøkere for å avgjøre hvilke kodedeler som ble hoppet over. GNU -debuggeren er et av de mange feilsøkingsverktøyene som er tilgjengelige for C -programmerere og er det største feilsøkingsverktøyet. Det tilbyr noen verktøy som lar brukeren se og vurdere et program mens det kjøres. En annen utmerket feilsøkingsfunksjonalitet er å støtte mange programmeringsspråk inkludert C, C ++, ADA, Fortron og Pascal. Følgende funksjoner er tilgjengelige via GDB når du feilsøker de multitreftede applikasjonene:
  • Den kan automatisk sende varsler for nyopprettede tråder.
  • Det gir muligheten til å bruke tråd-nei-kommandoen for å veksle mellom flere tråder.
  • Kommandoen “Info Threads” kan brukes til å finne ut om det er noen aktive tråder.
  • Ved å bruke “Tråden Apply [ThreadNo] [All] Args” -kommandoen, kan vi sende den samme kommandoen til flere tråder (eller en vipp av tråder).
  • For å finne ut hva som skjer når programkoden krasjer under utførelse, sonder du rundt i C -applikasjonene dine.
  • Bare de binære eller kjørbare filene som er opprettet under kompileringsprosessen er kompatible med GDB -feilsøking.

Bare skriv GDB i terminalvinduet for å få tilgang til operativsystemets GDB på Ubuntu eller noe annet Linux eller UNIX-basert operativsystem. GDB -kommandoskjermbildet vises i følgende illustrasjon. Det viser copyright -detaljene til GDB. GDBs åpne ledetekst indikerer informasjonen om når den er forberedt på å godta kommandoer. På noen GDB -konfigurasjoner der OS muliggjør trådene, er disse funksjonene ennå ikke tilgjengelige. Disse instruksjonene har ingen innvirkning på GDB som ikke tillater tråd. For eksempel ignorerer et system som mangler en trådstøtte resultatet av "Info Threads" -spørsmålet og ignorerer konsekvent trådinstruksjonen.

Du må bare skrive inn “Quit” -kommandoen i GDB -terminalen for å avslutte og avslutte din nåværende økt med GDB. Du kan se avsluttet instruksjon på GDB -feilsøking som vist i følgende:

GDB -debuggeren kom med mange feilsøkingskommandoer. Her er noen eksempler som er oppført som vi kan prøve å bruke GDB -feilsøking:

  1. Kjør eller R -> Det fullfører programmets utførelse fra start til slutt.
  2. pause eller b -> det brukes til å plassere et bruddpunkt på en viss linje eller setning.
  3. Deaktiver -> Det deaktiverer et bruddpunkt som var merket tidligere.
  4. Aktiver -> Det muliggjør et deaktivert bruddpunkt.
  5. Neste eller n -> Den neste kodelinjen kjøres, men unngå å gå direkte inn i funksjoner.
  6. Trinn -> Du bør gå videre til neste instruksjon og begynne å fullføre funksjonen.
  7. Liste eller l -> den viser hele koden til C -filen.
  8. Print eller p -> Det brukes til å skrive ut verdien som ble lagret tidligere.
  9. Slutt eller Q -> Det kommer ut av GDB -feilsøkingsskjermen.
  10. klart -> det brukes til å fjerne alle de markerte bruddpunktene.
  11. Fortsett -> Det brukes til å fortsette til normal utførelse av programmet.

Eksempel:
Her er et lite stykke kode som bruker flere tråder, lager dem med PTHread_Create -metoden og passerer trådenes metoder. Eksempelprogrammet har en hovedfunksjon () som lager to tråder i følgende illustrasjon. Det er nå tre tråder som kjører, inkludert foreldrene/originale Main () tråden. Hoved () -funksjonen bruker Pthread_Create () -funksjonen for å lage trådene og kalle dem etter hverandre.

Mens sløyfen sjekkes i følgende kode for å se om Count1 -variabelen er mindre enn 500. Hvis det er, blir utskriftserklæringen utført for å vise en "Tråd 1 er kjører" -streng sammen med tellevariabelen. Tråden er forbundet umiddelbart etter å ha brukt Pthread_ join () -funksjonskommandoen i denne koden.

Bruk følgende listede kommandoer for å kompilere koden ved hjelp av GCC -kompilatoren og se trådens aktivitet med BNP -feilsøkingen. Følgende bilde er et skjermbilde som viser at den forrige koden er vellykket samlet:

GCC -G Multithreads.C -o multithreads -lpthread

Mens du bruker Ubuntu 20.04 System, skriv inn følgende kommando på terminalskjermen for å se og undersøke tråden.

$ GDB ./Multithreads

Nå er vi i GDB -feilsøkingsmodus, takket være terminalvinduet. For å etablere breakpoints på hovedsaken, bruk tråden to og tråden tre rutiner for hver nydannede tråd. For å sette inn et bruddpunkt, bruker vi følgende listede kode. Det er en enkel kommando; Bare skriv pausen. Etter det, skriv navnet på trådmetodene for å sette inn breakpoints. Denne metoden viser linjenummeret der bruddpunktene ble lagt til etter å ha kommet inn.

For å kjøre programmet, bruk enten "Run" eller Simple "R" nøkkelordet som en kommando på terminalskjermen. En oversikt over programmets tråder og litt informasjon om deres nåværende tilstand er gitt av kommandoinfo -trådene, da du bør ta oppmerksom på. Det har bare vært en tråd startet i dette tilfellet så langt.

Utførelsen skal fortsette å bruke følgende kommando:

Ytterligere to tråder starter på dette stedet. Tråden som for tiden er i fokus, er betegnet av en stjerne. I tillegg er breakpoint -settet for de nyopprettede trådene i initialiseringsmetodene nådd - tråd to () og tråd tre (), spesifikt. Bruk kommandoen til å flytte fokuset til en annen tråd før du starter en faktisk trådfeil. På linje 17 av funksjonstråden to, tråd 2 () stopper.

I henhold til utdataene fra “Info Threads”, skriver tråd to kort ut tellertallet og forlater deretter tråden 2 på linje 17. Tilsvarende kan vi betjene "tråden_three" -tråden ved å bruke en ganske lignende måte som vi brukte til tråden_two.

Konklusjon

For å oppsummere det, er vi endelig i stand til å bruke GDB -debuggeren i Ubuntu 20.04 Linux -system. For dette forklarte vi bruken av bruken i det innledende avsnittet og listet opp noen av hovedfunksjonene som blir gitt oss og gjør det til en unik feilsøking.