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>

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.

Ukončiť
Zostavte kód
Nižšie je uvedený program, ktorý vykazuje nedefinované správanie pri kompilácii pomocou C99.
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.

Zobrazte kód
Nastavte bod prerušenia
Predstavme bod zlomu, povedzme riadok 5.

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.

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.

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.

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.

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.