DDD is a powerful tool which is a graphical interface for an inferior
debugger (usually gdb). DDD can do everything your favorite debugger can
and much more.
You can watch the code and execute it line by line
and examine data.
The speciality of DDD as its name might suggest is its ability to
display your programs data graphically in a very comfortable manner.
DDD will allow you to display structures and dereference pointers to create
a visualization of a linked-list or a tree. DDD can also create graphs out
of arrays.
DDD has a gdb command line, so anyone who can use gdb can use DDD and
gradually learn its special features.