If you are a Mac user, you can use LLDB instead, the usage is similar.
compile with the '-g' parameter
gcc -g main.c -o main
enter gdb
(for gdb)
gdb main
(for lldb)
lldb main
show source code
l
set breakpoints at line 10
b 10
show all breakpoints
(for gdb)
info b
(for lldb)
breakpoint list
set testcase input file
(for gdb)
run < testcase.txt
(for lldb)
settings set target.input-path testcase.txt
execute main
r
show the value of variable
p [variable_name]
continue execution to the next breakpoints
c
execute the next line
n
execute the next line, if there is a function call, step into that function
s
terminate the current debugging process
kill
leave gdb
q