Ero sivun ”Gdb” versioiden välillä
(peruskäytt) |
p (→Käyttö) |
||
(11 välissä olevaa versiota 6 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
Gdb (the GNU Debugger) on [[GNU]]-projektin debuggeri | '''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. | ||
Gdb:tä käytettäessä ohjelmaan on käännettävä debug- | == Ohjelman kääntäminen == | ||
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 | gcc softa.c -o softa -g | ||
Rivi 7: | Rivi 8: | ||
Gdb käynnistetään komennolla | Gdb käynnistetään komennolla | ||
gdb ./ohjelma | gdb ./ohjelma | ||
Jonka jälkeen | 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 === | === Ohjelman käynnistäminen === | ||
Ohjelma käynnistetään yksinkertaisesti komennolla <tt>run</tt>. Jos halutaan antaa ohjelmalle parametreja, ne kirjoitetaan komennon perään, esimerkiksi | Ohjelma käynnistetään yksinkertaisesti komennolla <tt>run</tt>. Jos halutaan antaa ohjelmalle parametreja, ne kirjoitetaan komennon perään, esimerkiksi | ||
run parametri1 parametri2 | run parametri1 parametri2 | ||
=== Lokitiedosto === | |||
Käynnistä loki-tiedosto (oletus tiedosto on gdb.txt): | |||
set logging on | |||
=== Keskeytyskohdan asettaminen === | === Keskeytyskohdan asettaminen === | ||
Rivi 25: | Rivi 34: | ||
Pysäytyskohdat ja tarkkailtavat muuttujat voi listata komennolla | Pysäytyskohdat ja tarkkailtavat muuttujat voi listata komennolla | ||
i b | i b | ||
=== Koodin suorittaminen rivi kerrallaan === | |||
Kun ohjelman suoritus on pysähtynyt edellä esiteltyyn keskeytyskohtaan, voi sitä suorittaa eteenpäin rivi kerrallaan komennolla | |||
step | |||
=== Lausekkeiden arvojen tutkiminen === | === Lausekkeiden arvojen tutkiminen === | ||
Rivi 32: | Rivi 45: | ||
p olio.Metodi() | p olio.Metodi() | ||
=== | === Backtrace === | ||
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 | 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ä === | === Lähdekoodin tutkiminen keskeytyskohdan ympäriltä === | ||
Keskeytyskohtaa voi tutkia komennolla <tt>list</tt> (tai <tt>l</tt>), joka tulostaa lähdekoodia keskeytyskohdan ympäriltä. Komennon toistaminen tulostaa lisää koodia kohdan alapuolelta. | Keskeytyskohtaa voi tutkia komennolla <tt>list</tt> (tai <tt>l</tt>), joka tulostaa lähdekoodia keskeytyskohdan ympäriltä. Komennon toistaminen tulostaa lisää koodia kohdan alapuolelta. | ||
== Katso myös == | |||
*[[Strace]] | |||
*[[Valgrind]] | |||
[[Luokka: | [[Luokka:Kehitystyökalut]] | ||
Nykyinen versio 14. elokuuta 2016 kello 12.45
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.