Biasanya kita mengecek error program dengan cara mengira-ngira dan menebak-nebak. Cara seperti itu sangat memakan energi dan waktu, apa lagi kalau program yang terdiri dari beberapa ribu bahkan diatas puluhan ribu baris kode. Nah, disinilah GDB akan membantu kita mempermudah proses men-debug sebuah program.
Kita akan memakai tool ini untuk debugging program binary search di bawah ini.
#include <stdio.h> void binary_search(int data[], int length, int key) { int start = 0; int end = length - 1; while (end >= start) { int current = (end + start) / 2; if (data[current] == key) { printf("%d ditemukan pada indeks ke-%d\n", key, current); return; } else if (data[current] > key) { end = current - 1; } else { start = current + 1; } } printf("Angka tidak ditemukan!\n"); return; } int main() { int num; printf("Masukkan banyaknya data: "); scanf("%d", &num); int data[num]; for (int i = 0; i < num; i++) { printf("Angka ke-%d: ", i); scanf("%d", &data[i]); } int key; printf("Ketik angka yang ingin dicari: "); scanf("%d", &key); binary_search(data, num, key); return 0; }
CC=clangKemudian compile program tersebut dengan command make binary_search.
CFLAGS= -ggdb3 -std=c99 -Wall -Werror
Kita mulai proses debugging program.
1. Pada terminal, ketik.
gdb ./binary_searchSehingga akan muncul tampilan seperti ini.
2. Ketik break main agar gdb memulai mengecek program dari main()
3. Ketik run untuk menjalankan program, bisa juga dengan hanya mengetik r.
GDB akan menampilkan kode program tersebut baris per baris, pada gambar terlihat kode program pada baris ke-33.
4. Ketik next untuk lanjut ke baris selanjutnya, bisa juga dengan hanya mengetik n.
GDB sampai pada baris ke-34 dimana terdapat scanf yang berfungsi menerima input dari user, sehingga muncul tampilan seperti di atas. Masukkan saja data sebanyak 5 data.
5. Karena kita sudah memasukkan nilai 5 pada variabel num, kita bisa mengecek nilai pada variabel tersebut dengan command.
print nama_variabelKarena variabel tersebut bernama num, maka kita mengetik command print num sehingga akan muncul tampilan seperti ini.
6. Ketik next atau n sampai menyentuh baris yang terdapat fungsi binary_search(), ketik n untuk lanjut ke baris berikutnya, atau ketik step atau s untuk "memasukki" fungsi tersebut dan melihat kode-kode di dalamnya.
Bisa dilihat, gdb langsung "lompat" ke baris ke-5 dimana fungsi binary_search() dimulai, dan juga ditampilkan nilai-nilai yang dimasukkan ke dalam parameter-parameter pada fungsi tersebut. Parameter data berupa array sehingga yang tampil adalah alamat memory dari variabel array data tersebut, sedangkan parameter length bernilai 5 karena kita memasukkan variabel num di dalamnya, dan juga parameter key benilai 7 karena kita memasukkan variabel key di dalamnya.
7. Kita juga bisa melihat nilai-nilai variabel pada scope tertentu dengan command info locals. Misalnya ketika kita berada pada scope fungsi binary_search(), ketika kita mengetik info locals maka akan diperlihatkan nilai-nilai variabel yang ada pada scope fungsi tersebut. (Baca: Konsep Scope dalam Pemrograman C)
Nilai-nilai yang tampil adalah nilai variabel pada scope lokal di binary_search(), tetapi bukan pada scope while yang terdapat di dalamnya.
Nah, dari percobaan diatas kita sudah mengetahui fungsi-fungsi command ini.
run Menjalankan program next Ke baris kode selanjutnya print Menampilkan nilai pada sebuah variabel step Melangkah masuk ke dalam sebuah fungsi/sub-program info locals Menampilkan nilai-nilai variabel pada scope tertentu
Sekian, semoga bermanfaat.
Post a Comment