(Caveat: I'm a C++ programmer, working on code that has lots of macros.)
The debugger. You can mouseover variables in the source view, and it shows the data (reliably, and points to concrete classes). It lets you switch between threads easily, and shows backtraces you double click on to get to the relevant source code. It uses a normal GUI file browser to let you choose symbols to load, if you haven't set it up beforehand (also via a GUI), and warns when it's out of date. With lots of annoying config file hacking, it can let you display structures in a custom manner.
The closest I've seen on Linux was insight, and that was quite a few years ago (maybe it's improved since?). GDB has a huge barrier to entry, and being line-input based means there's no organization (I don't want my code to be displayed in the same place as my backtrace or my local variables). DDD doesn't reliably display my data, and when it does manage to do so visualizes anything C++ horribly.
I've tried KDevelop (3 and 4) a while back; it absolutely hated dealing with things that has an external build system (i.e. it doesn't work as a pure debugger). Debugging C++ in Eclipse was a joke when I tried it (the one time I did have to work on Java, though, it was pretty nice).
As a reference, I code in Komodo/Eclipse/vim (all on the same code base, depends on what I feel like), on a project that uses autoconf/gmake. That applies to both win32 (via msys+msvc) and Linux. I use MSVC as a pure debugger, not as a code editor.