Instead of just reading the code, a debugger such as GDB, can be used to find errors in C programs. GDB is available in linux distributions.
Example code, prod.c :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <stdlib.h> int mul(int x, int y){ int prod; int i; prod=0; for (i=0;i<y;i++){ prod=prod+x; } return prod; } int main(){ int a=4; int b=3; printf("The product of %d and %d is %d\n",a,b,mul(a,b)); return 0; } |
The following are the typical activities when debugging C programs:
1. Create the executable with debug information
$ gcc -g -o prod.exe prod.c
For assembly language programs:
$ nasm -g -F dwarf -felf64 prod.asm
$ ld -o prod.exe prod.o
2. Load the program in GDB
$ gdb prod.exe
3. View the source code listing
(gdb) list
4. Set a breakpoint
(gdb) b * main
5. Execute until breakpoint
(gdb) r
6. Execute next line
(gdb) n
7. View current line being executed
(gdb) frame
8. Step into a function
(gdb) s
9. View local variables
(gdb) info locals
10. Print variables
(gdb) print a
11. Set new values for variables
(gdb) set variable a=5
12. Continue execution until next breakpoint
(gdb) c
13. Quit
(gdb) quit