GNU Debugger (GDB) adalah debugger open-source untuk Sistem GNU. Debugger bersifat portabel dan dapat digunakan untuk berbagai bahasa seperti C/C++ dan Fortran. Ini dapat digunakan untuk men-debug program dengan mengamati statusnya pada breakpoint tertentu dan bahkan mengubah aliran atau nilai untuk eksekusi lebih lanjut. Biasanya, GDB berjalan di baris perintah tetapi beberapa GUI juga telah dikembangkan untuk itu.
Dalam artikel ini, kami mengeksplorasi cara men-debug program C menggunakan GDB di Ubuntu 20.04 LTS (Focal Fossa).
Prasyarat
- Sistem Ubuntu 20.04
- Pengguna dengan hak sudo untuk mengganti nama banyak file.
Catatan: Perintah yang dibahas dalam artikel ini telah diuji di Ubuntu 20.04 LTS (Fossa Fokus).
Menginstal Paket
Instal paket GN prasyarat untuk kompilasi dan debugging. Jalankan perintah berikut di terminal:
$ sudo apt install gcc gdb -y
Contoh Program-C untuk debugging
Kode
Sebelum dijalankan, sebuah program perlu dikompilasi. Kita akan mengkompilasi kode C berikut di file main.c .
#include <stdio.h> int main() { for (int i=0; i<5; ++i) { printf("Iterator: %d\n", i); } return 0; }
Kompilasi Program C menggunakan GCC
Biasanya, kode C dikompilasi di GCC menggunakan perintah berikut:
$ gcc main.c -o bin
Argumen lain perlu diberikan untuk menyertakan simbol dalam biner. simbol ini digunakan oleh GDB untuk melacak dan men-debug program. Jalankan perintah berikut di terminal untuk mengkompilasi kode C:
$ gcc -g main.c -o bin
File yang dapat dieksekusi bernama bin akan muncul.
Jalankan program pengujian
File biner bernama bin dapat dieksekusi seperti file yang dapat dieksekusi lainnya pada antarmuka baris perintah. Gunakan perintah berikut untuk menjalankannya di terminal:
$ ./bin
Keluaran kode akan muncul.
Men-debug Aplikasi di Linux
Mulai Debugger
Jalankan utilitas GDB menggunakan perintah berikut di terminal:
$ gdb bin
Tekan enter. Konsol untuk terminal GDB akan muncul. Masukkan lari perintah di konsol ini untuk menjalankan executable yang disediakan untuk utilitas sebagai argumen.
(gdb) run
Debug Breakpoints
Tambahkan Breakpoint
Breakpoints dapat ditambahkan dalam beberapa cara. Kami akan menambahkan breakpoint pada printf fungsi dalam kode kita. Jalankan perintah berikut di terminal untuk menambahkan breakpoint:
(gdb) break printf
Atau, nomor baris juga dapat digunakan untuk menambahkan breakpoint.
(gdb) break 6
Masukkan lari perintah dan program akan berhenti di breakpoint.
Langkah Breakpoints
Gunakan perintah lanjutkan untuk melanjutkan eksekusi program.
(gdb) continue
Ada dua perintah lain untuk tujuan yang berbeda untuk melanjutkan eksekusi program:
- Langkah:langkah-langkah melalui instruksi mesin berikutnya.
- Selanjutnya:langkah-langkah untuk melewati baris kode berikutnya.
Singkatan dari perintah juga dapat digunakan. Seperti singkatan dari lanjutkan perintahnya adalah c.
(gdb) c
Informasi Tentang Breakpoint
Informasi tentang breakpoint dapat diamati menggunakan info perintah gdb . Jalankan perintah berikut pada terminal:
(gdb) info breakpoints
Informasi tentang breakpoint akan muncul.
Catatan:Angka di sebelah kiri breakpoint digunakan untuk merujuknya dengan perintah lain.
Hapus Breakpoint
Sebuah breakpoint dapat dihapus menggunakan delete perintah dan dengan mengacu pada nomor breakpoint yang diamati pada output info utilitas.
(gdb) delete 1
Sekarang breakpoint telah dihapus dan jika dijalankan, program akan langsung dijalankan sampai akhir.
Variabel Tontonan
Variabel dapat ditonton menggunakan utilitas arloji. Pertama, kita perlu memasukkan ruang lingkup di mana variabel itu ada. Untuk tujuan ini, tambahkan breakpoint terlebih dahulu menggunakan perintah berikut:
(gdb) break 6
Kemudian jalankan kode yang mencapai breakpoint ini.
(gdb) r
Sekarang kita berada di loop di mana variabel i ada.
Jam tangan perintah akan digunakan untuk mengamati nilai sebelumnya dan baru dari variabel i dalam lingkaran.
(gdb) watch i
Sekarang breakpoint dihasilkan oleh watch perintah akan muncul dalam daftar breakpoints juga. Daftar breakpoint dapat ditampilkan dengan menggunakan perintah berikut:
(gdb) info breakpoints
Selain itu, kita tidak perlu memasukkan breakpoint sebelumnya. Itu dapat dengan mudah dihapus menggunakan perintah berikut:
(gdb) delete 1
Sekarang jika dilanjutkan, kode akan melihat nilai setiap kali variabel telah mengubah nilainya dan menampilkan nilai lama dan baru.
(gdb) c
Iterasi lebih lanjut dari program dapat diamati juga, menggunakan perintah yang sama.
Keluar dari Debugger
Jalankan perintah berikut di terminal untuk keluar dari debugger.
(gdb) quit
gdb close tutup ini utilitas dan prompt baris perintah default akan muncul.
Kesimpulan
Pada artikel ini, kami menjelajahi cara menjalankan dan menghancurkan program di GDB. Selain itu, ia juga dikonfigurasi untuk memecah dirinya sendiri ketika nilai variabel telah berubah. Kami harap Anda dapat dengan mudah men-debug program Anda di GDB setelah mengikuti artikel ini.