I noticed while installing Ubuntu, DDD is now available as a distro package. Perhaps it always has been, but about 6 months or so ago I went to check it out and could not find an rpm as it only recently began being maintained again after some years, and I had to patch a bug in lesstif in order to build from source.

I only use a debugger when I have to, and not for fun, but I will say this -- having a GUI frontend for gdb makes it a lot more useful (there is also --tui, which uses ncurses windows, but I've never fooled with that). One of the nicest things about it is the (optional) gridded "data window" at the top; you can click on any variable in the source view and send it to the data window, then drag them around into whatever arrangement you want with the mouse. As you can see in the screenshot, I've lined up a couple of struct instances and a variable ("hit"). In the "BlockBoard" struct, I can even view all the elements of a member array (BlockBoard is also an array, so BlockBoard[n].xxyz is the case in point). The values are kept updated during execution, so here I have a (point n' click!) breakpoint set (the red stop sign) in a oft-called function, and everytime I hit the breakpoint the values for the two structs and "hit" are made current. That's almost as good as a nice printf and a lot more convenient and simple to configure.

Also, you can reload the executable if you re-compile, and as long as the source changes aren't too drastic, you keep all your break points and the data display choices in the data window -- which you can maintain different sets of those relevant to different breakpoints (only variables which apply to the current context will appear).

The little toolbar window stage right is handy too, if you set it "stays on top".

I won't claim to be an expert with this, I just wanted to make it known to people like me who don't like IDE's etc. If you are just learning to use gdb, this will probably make it easier (it seems more intuitive, IMO). I barely ever have to type anything, but you can see the gdb commands used by DDD in the bottom window.

The one obvious criticism I'd make it is uses an archiac version of Qt, so the interface looks kinda crappy, and selecting a file in a pop-up includes the archiac and confusing "filter" button (you have to select a subdirectory, then click "filter", then choose a file).