The lack of discussion about pdb on the internet speaks to Python's simplicity and transparency. There just aren't many subtle traps to fall into from which you need a debugger to free yourself.<p>At my current job I write C++ and I use a debugger practically every day. My previous job was all Python and I reached for pdb maybe 3 times in 4 years.
I prefer <a href="http://winpdb.org/" rel="nofollow">http://winpdb.org/</a> (Not windows only.)<p>The debugger runs as a full screen GUI app, which you attach via sockets to a running process, so you can easily debug stuff like FCGIs on other machines, etc.
Or if you use PyDev for Eclipse:<p>import pydevd; pydevd.settrace('192.168.xxx.xxx')<p>Same kind of thing, but with full debug UI, and you can debug remote processes, eg behind apache!
ipdb lets you use pdb in a ipython shell which makes it much more powerful.
<a href="http://pypi.python.org/pypi/ipdb" rel="nofollow">http://pypi.python.org/pypi/ipdb</a>
There is also a fairly useful debug module named epdb from the guys at rpath. It opens up a port and lets you netcat to it and debug remotely. This is great for running things in a virt and being able to actually cut and paste to the debug session.<p><a href="http://bitbucket.org/rpathsync/epdb" rel="nofollow">http://bitbucket.org/rpathsync/epdb</a>