Gdb

Linux.fista
Versio hetkellä 14. elokuuta 2016 kello 12.45 – tehnyt Lahtis (keskustelu | muokkaukset) (→‎Käyttö)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Gdb (the GNU Debugger) on GNU-projektin virheenjäljitysohjelma (debuggeri). Sitä käytetään komentoriviltä ja alun opettelun jälkeen se on erittäin tehokas työkalu ohjelmistojen bugien etsimiseen.

Ohjelman kääntäminen[muokkaa]

Gdb:tä käytettäessä ohjelmaan on käännettävä debug-tietoja. GCC:tä käytettäessä tämä onnistuu valitsimella -g:

gcc softa.c -o softa -g

Käyttö[muokkaa]

Gdb käynnistetään komennolla

gdb ./ohjelma

Jonka jälkeen gdb:tä käytetään sen omilla komennoilla, joita esitellään seuraavassa. Komentoja ei tarvitse kirjoittaa kokonaan, vaan riittävä määrä alkua riittää jos komento on tällöin yksiselitteinen.

Prosessissa olevan ohjelman jäljitys käynnistyy seuraavalla komennolla

dgb ./ohjelma pid

Ohjelman käynnistäminen[muokkaa]

Ohjelma käynnistetään yksinkertaisesti komennolla run. Jos halutaan antaa ohjelmalle parametreja, ne kirjoitetaan komennon perään, esimerkiksi

run parametri1 parametri2

Lokitiedosto[muokkaa]

Käynnistä loki-tiedosto (oletus tiedosto on gdb.txt):

set logging on

Keskeytyskohdan asettaminen[muokkaa]

Ohjelman suoritus voidaan määrätä pysähtymään tietylle riville seuraavasti:

b tiedosto:rivi

Esimerkiksi

b main.cpp:45

Keskeyttäisi ohjelman suorituksen tiedoston main.cpp riville 45.

Pysäyttämisen voi laittaa tapahtumaan myös mikäli tietyn muuttujan arvo muuttuu:

watch muuttuja

Pysäytyskohdat ja tarkkailtavat muuttujat voi listata komennolla

i b

Koodin suorittaminen rivi kerrallaan[muokkaa]

Kun ohjelman suoritus on pysähtynyt edellä esiteltyyn keskeytyskohtaan, voi sitä suorittaa eteenpäin rivi kerrallaan komennolla

step

Lausekkeiden arvojen tutkiminen[muokkaa]

Ohjelman suorituksen pysähdyttyä esim. keskeytyskohtaan tai ohjelman kaatumiseen, voidaan lausekkeiden arvoja tarkkailla print-komennolla:

print muuttuja

Tai esimerkiksi

p olio.Metodi()

Backtrace[muokkaa]

Backtrace tarkoittaa listaa viimeksi kutsutuista funktioista ja niille välitetyistä parametreista. Tämä on erityisen hyödyllistä selvitettäessä syitä ohjelman kaatumiseen. Tämän tiedon saa näkyviin komennolla

bt

tulostaa virheilmoitukset lyhyessä muodossa.

thread apply all bt

tulostaa virheilmoitukset pitkässä muodossa.

thread apply all bt full

Lähdekoodin tutkiminen keskeytyskohdan ympäriltä[muokkaa]

Keskeytyskohtaa voi tutkia komennolla list (tai l), joka tulostaa lähdekoodia keskeytyskohdan ympäriltä. Komennon toistaminen tulostaa lisää koodia kohdan alapuolelta.

Katso myös[muokkaa]