logo

GDB (Úvod krok za krokom)

GDB je skratka pre GNU Project Debugger a je to výkonný ladiaci nástroj pre C (spolu s inými jazykmi ako C++). Pomáha vám hrabať sa vo vašich programoch C počas ich vykonávania a tiež vám umožňuje vidieť, čo sa presne stane, keď váš program zlyhá. GDB pracuje so spustiteľnými súbormi, ktoré sú binárnymi súbormi vytvorenými procesom kompilácie.

Na účely ukážky je nižšie uvedený príklad spustený na počítači so systémom Linux s nižšie uvedenými špecifikáciami.



uname -a>
nepomenovať

uname -a

Učme sa tým, že: -

Spustite GDB

Prejdite do príkazového riadka systému Linux a zadajte gdb.

gdb>

gdb



býci vs vôl

Gdb open prompt vám oznámi, že je pripravený na príkazy. Ak chcete ukončiť program gdb, napíšte quit alebo q.

quit_gdb

Ukončiť

Zostavte kód

Nižšie je uvedený program, ktorý vykazuje nedefinované správanie pri kompilácii pomocou C99. zoznam-1



Poznámka: Ak objekt, ktorý má automatické trvanie uloženia, nie je explicitne inicializovaný, jeho hodnota je neurčitá, pričom neurčitá hodnota je buď nešpecifikovaná hodnota alebo reprezentácia pasce.

Teraz skompilujte kód. (tu test.c). g príznak znamená, že môžete vidieť správne názvy premenných a funkcií v rámcoch zásobníka, získať čísla riadkov a vidieť zdroj, keď prechádzate v spustiteľnom súbore. príznak -std=C99 znamená, že na kompiláciu kódu použite štandardný C99. -o príznak zapíše výstup zostavy do výstupného súboru.

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

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

Spustite GDB s vygenerovaným spustiteľným súborom

Zadajte nasledujúci príkaz na spustenie GDB s kompilovaným spustiteľným súborom.

gdb ./test>

gdb ./test

Užitočné príkazy GDB:

Tu je niekoľko užitočných príkazov, ako začať s GDB.

Príkaz Popis
spustiť alebo r Spustí program od začiatku do konca.
zlomiť alebo b Nastaví bod prerušenia na konkrétnom riadku.
zakázať Zakáže bod prerušenia
povoliť Povolí zakázaný bod prerušenia.
ďalšie alebo n Vykoná ďalší riadok kódu bez ponorenia sa do funkcií.
krok Prejde na ďalší pokyn a ponorí sa do funkcie.
zoznam alebo l Zobrazí kód.
tlač alebo str Zobrazuje hodnotu premennej.
ukončiť alebo q Opustí GDB.
jasný Vymaže všetky body prerušenia.
ďalej Pokračuje v normálnom vykonávaní

Zobrazte kód

Teraz zadajte l na výzvu gdb, aby sa zobrazil kód.

bod zlomu

Zobrazte kód

Nastavte bod prerušenia

Predstavme bod zlomu, povedzme riadok 5.

info_b

Nastavte bod prerušenia

Ak chcete umiestniť bod prerušenia na rôzne riadky, môžete zadať b poradové číslo .V predvolenom nastavení zobrazím zoznam alebo iba prvých 10 riadkov.

výroková logika

Zobraziť body prerušenia

Ak chcete zobraziť body prerušenia, zadajte info b.

zakázať

Zobraziť body prerušenia

Zakázať bod prerušenia

Po vykonaní vyššie uvedeného povedzme, že ste zmenili názor a chcete sa vrátiť. Zakázať typ b.

povoliť-1

Zakázať bod prerušenia

Znova povoľte zakázaný bod prerušenia

Ako je vyznačené v modrom krúžku, Enb sa zmení na n pre zakázané. 9. Znova povoliť nedávny zakázaný bod prerušenia. Povoliť typ b.

first_run

Znova povoľte zakázaný bod prerušenia

Spustite kód

Spustite kód zadaním run alebo r. Ak ste nenastavili žiadne body prerušenia, príkaz run jednoducho spustí celý program.

print_value_x

Spustite kód

Vytlačte hodnoty premenných

Ak chcete zobraziť hodnotu premennej, zadajte print názov_premennej alebo p názov_premennej .

Vytlačte hodnoty premenných

Vyššie uvedené ukazuje hodnoty uložené v x v čase vykonania.

Zmeňte hodnoty premenných

Ak chcete zmeniť hodnotu premennej v gdb a pokračovať vo vykonávaní so zmenenou hodnotou, napíšte set názov_premennej .

Výstup ladenia

Nižšie uvedená snímka obrazovky zobrazuje hodnoty premenných, z ktorých je celkom pochopiteľný dôvod, prečo sme ako výstup dostali hodnotu odpadu. Pri každom vykonaní . /test dostaneme iný výstup.

Cvičenie: Skúste použiť set x = 0 v gdb pri prvom spustení a uvidíte výstup c.

Výstup ladenia

GDB ponúka oveľa viac spôsobov ladenia a porozumenia kódu, ako je skúmanie zásobníka, pamäte, vlákien, manipulácia s programom atď. Dúfam, že vyššie uvedený príklad vám pomôže začať s gdb.

Záver

V tomto článku sme diskutovali o GDB (GNU Debugger), čo je výkonný nástroj v Linuxe používaný na ladenie programov C. Prediskutovali sme niektoré z nasledujúcich krokov, aby sme mohli skompilovať váš kód s informáciami o ladení, spustiť GDB, nastaviť bod prerušenia, preskúmať premenné a analyzovať správanie programu. Diskutovali sme aj o funkciách GDB, ako je skúmanie kódu, správa bodov prerušenia, manipulácia s premennými a kontrola vykonávania programu, ktoré nám umožňujú efektívne ladiť a riešiť problémy.