GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak používat GDB k ladění programů v Ubuntu 20.04

GNU Debugger (GDB) je open-source debugger pro systémy GNU. Ladicí program je přenosný a lze jej použít pro více jazyků jako C/C++ a Fortran. Lze jej použít pro ladění programů sledováním jejich stavů na konkrétních bodech přerušení a dokonce změnou toku nebo hodnot pro další provádění. GDB obvykle běží v příkazovém řádku, ale také pro něj bylo vyvinuto několik GUI.

V tomto článku prozkoumáme, jak ladit programy C pomocí GDB v Ubuntu 20.04 LTS (Focal Fossa).

Předpoklady

  • Systém Ubuntu 20.04
  • Uživatel s právy sudo pro přejmenování více souborů.

Poznámka: Příkazy popsané v tomto článku byly testovány na Ubuntu 20.04 LTS (Focal Fossa).

Instalace balíčků

Nainstalujte nezbytné balíčky GN pro kompilaci a ladění. Spusťte v terminálu následující příkaz:

$ sudo apt install gcc gdb -y

Příklad programu C pro ladění

Kód

Před spuštěním je potřeba program zkompilovat. Chystáme se zkompilovat následující kód C v souboru main.c .

#include <stdio.h>

int main() {

for (int i=0; i<5; ++i) {
printf("Iterator: %d\n", i);
}
return 0;
}

Zkompilujte program C pomocí GCC

Obvykle se kód C kompiluje v GCC pomocí následujícího příkazu:

$ gcc main.c -o bin

Je třeba uvést další argument, který zahrnuje symboly v binárním. Tyto symboly jsou používány GDB ke sledování a ladění programu. Spuštěním následujícího příkazu v terminálu zkompilujte kód C:

$ gcc -g main.c -o bin

Spustitelný soubor s názvem bin se objeví.

Spusťte testovací program

Binární soubor s názvem bin lze spustit jako jakýkoli jiný spustitelný soubor na rozhraní příkazového řádku. Ke spuštění v terminálu použijte následující příkaz:

$ ./bin

Zobrazí se výstup kódu.

Ladění aplikace v systému Linux

Spustit ladicí program

Spusťte nástroj GDB pomocí následujícího příkazu v terminálu:

$ gdb bin

Stiskněte enter. Zobrazí se konzola pro terminál GDB. Zadejte běh příkaz v této konzole ke spuštění spustitelného souboru poskytnutého obslužnému programu jako argument.

(gdb) run

Ladění bodů přerušení

Přidat body přerušení

Body přerušení lze přidat několika způsoby. Do printf přidáme bod přerušení funkce v našem kódu. Chcete-li přidat bod přerušení, spusťte v terminálu následující příkaz:

(gdb) break printf

Alternativně lze k přidání bodu přerušení použít také číslo řádku.

(gdb) break 6

Zadejte běh a program se zastaví v bodě přerušení.

Krok přes body přerušení

Použijte příkaz pokračovat pokračovat ve vykonávání programu.

(gdb) continue

Existují dva další příkazy pro různé účely pokračování provádění programu:

  • Krok:kroky přes další strojovou instrukci.
  • Další:kroky k přechodu na další řádek kódu.

Lze použít i zkratky příkazů. Stejně jako zkratka pokračovat příkaz je c.

(gdb) c

Informace o bodech přerušení

Informace o bodech přerušení lze sledovat pomocí info příkaz gdb . Spusťte následující příkaz terminálu:

(gdb) info breakpoints

Zobrazí se informace o bodech přerušení.

Poznámka:Číslo vlevo od bodu přerušení se používá k odkazování na něj jinými příkazy.

Smazat zarážky

Bod přerušení lze smazat pomocí delete a odkazem na číslo bodu přerušení pozorované ve výstupu info utility.

(gdb) delete 1

Nyní byl bod přerušení odstraněn a pokud je spuštěn, program se spustí přímo do konce.

Sledování proměnných

Proměnné lze sledovat pomocí nástroje watch. Nejprve musíme zadat rozsah, ve kterém proměnná existuje. Za tímto účelem nejprve přidejte bod přerušení pomocí následujícího příkazu:

(gdb) break 6

Potom spusťte kód, který dosáhne tohoto bodu přerušení.

(gdb) r

Nyní jsme ve smyčce, kde je proměnná i existuje.

hodinky příkaz bude použit k pozorování předchozí a nové hodnoty proměnné i ve smyčce.

(gdb) watch i

Nyní bod přerušení generovaný sledováním příkaz se objeví také v seznamu bodů přerušení. Seznam bodů přerušení lze zobrazit pomocí následujícího příkazu:

(gdb) info breakpoints

Navíc nepotřebujeme bod přerušení vkládat dříve. Lze jej snadno odstranit pomocí následujícího příkazu:

(gdb) delete 1

Pokud nyní budete pokračovat, kód zobrazí hodnoty vždy, když proměnná změní hodnotu, a zobrazí staré i nové hodnoty.

(gdb) c

Pomocí stejného příkazu lze také sledovat další iterace programu.

Ukončit ladicí program

Spuštěním následujícího příkazu v terminálu ukončete ladicí program.

(gdb) quit

Tímto zavřete gdb zobrazí se výchozí příkazový řádek.

Závěr

V tomto článku jsme prozkoumali, jak spustit a přerušit program v GDB. Navíc byl také nakonfigurován tak, aby se sám zlomil, když se změní hodnota proměnné. Doufáme, že po dodržení tohoto článku můžete snadno ladit své programy v GDB.


Ubuntu
  1. Jak ladit programy C v Linuxu pomocí gdb

  2. Jak používat příkaz Uptime v Ubuntu Linux

  3. Jak používat ssh-keyscan na Ubuntu

  1. Jak používat příkaz Linux Shutdown Command v Ubuntu 18.04 a CentOS 7

  2. Jak používat příkaz tail v Ubuntu Linux

  3. Jak používat ssh-agent na Ubuntu

  1. Jak používat příkaz vmstat

  2. Jak používat příkaz string v Ubuntu

  3. Jak používat příkaz netplan na Ubuntu