Please consider both commercial and free debuggers. Would like to see also the pros and cons for each.
UndoDB sounds interesting in that it allows reverse stepping. However, it's expensive and I'm well adapted to gdb so I'm unlikely to change. Others I've seen don't have the extra features required to entice me away from my known environment.
Going off on a ledge here, but if your up to it Sun's MDB is great, especially if you use lots of templates and threaded code. It beats GDB hands down if that's your situation. On the other hand its not that great if all you need are breakpoints, I'd stick with GDB in that case.
I really like EDB (Evan's Debugger).
It has a nice 'OllyDBG feel', which was great because I used it quite a deal when I was still working on the windows platform.
EDB (Evan's Debugger) is a QT4 based binary mode debugger with the goal of having usability on par with OllyDbg. It uses a plugin architecture, so adding new features can be done with ease. The current release is for Linux, but future releases will target more platforms.
On Linux, most debugging is handled via GDB. As others have mentioned, however, it is not necessary to use GDB directly. A variety of options exist, some mentioned in previous answers:
- Emacs (has a GDB frontend)
- DDD (Motif-based, somewhat quirky, graphical interface with excellent data inspection capabilities)
- Nemiver (GTK-based frontend)
- Eclipse
- Code::Blocks
- NetBeans can probably do it as well
- Anjuta (Gnome IDE)
Of these, I've used DDD and tried Nemiver. At the time, Nemiver was short on features, and thus didn't work very well for me. That was two years ago, though. I've often used DDD, and find its data viewing excellent and worth working with its UI. I also frequently just use gdb from the command line, though.