logo

GDB (žingsnis po žingsnio įvadas)

GDB reiškia GNU Project Debugger ir yra galingas C derinimo įrankis (kartu su kitomis kalbomis, tokiomis kaip C++). Tai padeda naršyti po C programas, kai jos vykdomos, taip pat leidžia pamatyti, kas tiksliai nutinka, kai programa užstringa. GDB veikia su vykdomaisiais failais, kurie yra dvejetainiai failai, sukurti kompiliavimo proceso metu.

Demonstraciniais tikslais toliau pateiktas pavyzdys vykdomas Linux kompiuteryje su toliau pateiktomis specifikacijomis.



uname -a>
uname

uname -a

Mokykimės darydami: -

Paleiskite GDB

Eikite į „Linux“ komandų eilutę ir įveskite gdb.

gdb>

gdb



atidaryti failą su java

Gdb atvira eilutė leidžia žinoti, kad ji yra paruošta komandoms. Norėdami išeiti iš gdb, įveskite quit arba q.

quit_gdb

Mesti

Sukompiliuokite kodą

Žemiau yra programa, kuri rodo neapibrėžtą elgesį, kai kompiliuojama naudojant C99. sąrašas-1



Pastaba: Jei objektas, turintis automatinę saugojimo trukmę, nėra aiškiai inicijuotas, jo reikšmė yra neapibrėžta, o neapibrėžta reikšmė yra arba nenurodyta reikšmė, arba spąstų atvaizdas.

Dabar sukompiliuokite kodą. (čia bandymas.c). g vėliava reiškia, kad galite matyti tinkamus kintamųjų ir funkcijų pavadinimus savo dėklo rėmeliuose, gauti eilučių numerius ir matyti šaltinį, kai naršote vykdomajame faile. -std=C99 vėliavėlė reiškia naudoti standartą C99 kodui sudaryti. -o vėliava rašo kūrimo išvestį į išvesties failą.

gcc -std=c99 -g -o test test.C>

gcc -std=c99 -g -o bandomasis testas.C

Paleiskite GDB su sugeneruotu vykdomuoju failu

Įveskite šią komandą, kad paleistumėte GDB su sukompiliuotu vykdomuoju failu.

gdb ./test>

gdb ./test

Naudingos GDB komandos:

Čia yra keletas naudingų komandų norint pradėti naudotis GDB.

komandą apibūdinimas
paleisti arba r Vykdo programą nuo pradžios iki pabaigos.
pertrauka arba b Nustato lūžio tašką tam tikroje eilutėje.
išjungti Išjungia pertraukos tašką
įjungti Įjungia išjungtą pertraukos tašką.
kitas arba n Vykdo kitą kodo eilutę, nesigilindamas į funkcijas.
žingsnis Pereinama prie kitos instrukcijos, pasinerdama į funkciją.
sąrašą arba l Rodo kodą.
spausdinti arba p Rodo kintamojo reikšmę.
mesti arba q Išeina iš GDB.
aišku Išvalo visus pertraukos taškus.
Tęsti Tęsiamas įprastas vykdymas

Rodyti kodą

Dabar įveskite l į gdb raginimą, kad būtų rodomas kodas.

lūžio taškas

Rodyti kodą

Nustatykite pertraukos tašką

Įveskime lūžio tašką, tarkime 5 eilutę.

info_b

Nustatykite pertraukos tašką

Jei norite nustatyti lūžio tašką skirtingose ​​eilutėse, galite įvesti b eilės numeris .Pagal numatytuosius nustatymus sąrašas arba l rodomos tik pirmosios 10 eilučių.

Peržiūrėkite lūžio taškus

Norėdami pamatyti lūžio taškus, įveskite info b.

išjungti

Peržiūrėkite lūžio taškus

Išjungti pertraukos tašką

Atlikę aukščiau nurodytus veiksmus, tarkime, kad persigalvojote ir norite grįžti. Tipas išjungti b.

įjungti-1

Išjungti pertraukos tašką

referencinis kintamasis Java

Iš naujo įgalinkite išjungtą pertraukos tašką

Kaip pažymėta mėlyname apskritime, Enb tampa n neįgaliesiems. 9. Norėdami iš naujo įjungti neseniai išjungtą pertraukos tašką. Įveskite įgalinti b.

pirmasis_paleidimas

Iš naujo įgalinkite išjungtą pertraukos tašką

Paleiskite kodą

Vykdykite kodą įvesdami paleisti arba r. Jei nenustatėte jokių lūžio taškų, vykdymo komanda tiesiog vykdys visą programą.

print_value_x

Paleiskite kodą

Spausdinti kintamųjų reikšmes

Norėdami pamatyti kintamojo reikšmę, įveskite print kintamojo_pavadinimas arba p kintamojo_pavadinimas .

Spausdinti kintamųjų reikšmes

Aukščiau rodomos reikšmės, saugomos x vykdymo metu.

Keisti kintamųjų reikšmes

Norėdami pakeisti gdb kintamojo reikšmę ir tęsti vykdymą su pakeista reikšme, įveskite set kintamojo_pavadinimas .

Derinimo išvestis

Žemiau esančioje ekrano kopijoje rodomos kintamųjų reikšmės, iš kurių visiškai suprantama priežastis, kodėl kaip išvestį gavome šiukšlių reikšmę. Kiekvienos įvykdymo metu. /testas gausime kitokią išvestį.

Pratimas: Pabandykite naudoti rinkinį x = 0 gdb pirmą kartą ir pamatysite c išvestį.

Derinimo išvestis

GDB siūlo daug daugiau būdų, kaip derinti ir suprasti kodą, pvz., tirti krūvą, atmintį, gijas, manipuliuoti programa ir tt Tikiuosi, kad aukščiau pateiktas pavyzdys padės jums pradėti dirbti su gdb.

Išvada

Šiame straipsnyje aptarėme GDB (GNU Debugger), kuris yra galingas Linux įrankis, naudojamas C programoms derinti. Aptarėme kai kuriuos toliau nurodytus veiksmus, kad galėtume sudaryti jūsų kodą su derinimo informacija, paleisti GDB, nustatyti pertraukos tašką, ištirti kintamuosius ir analizuoti programos elgseną. Taip pat aptarėme GDB funkcijas, tokias kaip kodo tyrimas, lūžio taško valdymas, kintamųjų manipuliavimas ir programos vykdymo kontrolė, kurios leidžia efektyviai derinti ir išspręsti problemas.