DDD is a powerful tool which is a graphical interface for an inferior debugger (usually gdb). DDD can do everything your favourite 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.