Programı yazalım
$ vim factorial.c # include <stdio.h> int main() { int i, num, j; printf ("Enter the number: "); scanf ("%d", &num ); for (i=1; i<num; i++) j=j*i; printf("The factorial of %d is %d\n",num,j); }
$ cc factorial.c $ ./a.out Enter the number: 3 The factorial of 3 is 12548672
gdb kullanabilmek için ”cc -g” ile compile edelim
$ cc -g factorial.c
Önce gdb yi a.out için çalıştırıyoruz.
$ gdb a.out
Sonra break point koyuyoruz
Syntax:
break line_number * break [file_name]:line_number * break [file_name]:func_name break 10 Breakpoint 1 at 0x804846f: file factorial.c, line 10.
“run ” ile programı çalıştır
run [args] run Starting program: /home/sathiyamoorthy/Debugging/c/a.out İlk break pointe kadar program çalışır eder Breakpoint 1, main () at factorial.c:10 10 j=j*i;
Bu noktada debug edebiliriz
Değişken değerlerine bakalım
Syntax: print {variable} Examples: print i print j print num (gdb) p i $1 = 1 (gdb) p j $2 = 3042592 (gdb) p num $3 = 3 (gdb)
gdb ile kullanılabilecek diğer seçenekler
c (continue kısaltması): Bir sonraki break point e kadar sür.
n (next kısaltması): Birsonraki satırı sür
s (step kısaltması): n ile aynıdır fakat fonksiyon geldiğinde fonksiyonu tek satır olarak almaz fonksiyona gidip onu satır satır çalıştırır
Diğer seçeekler
l – list
p – print
c – continue
s – step
ENTER: bir önceki emri tekrar et
l command: Kaynak kodu görmek için kullanılır
bt: backtrack – Print backtrace of all stack frames, or innermost COUNT frames.
help – help TOPICNAME.
quit – çıkış
Bir cevap yazın