Debugging python programs in emacs
Solution 1:
Type M-x cd
to change directory to the location of the program you wish to debug.
Type M-x pdb
. You'll be prompted with Run pdb (like this): pdb
. Enter the name of the program (e.g. test.py
).
At the (Pdb)
prompt, type help
to learn about how to use pdb.
Alternatively, you can put
import pdb
pdb.set_trace()
right inside your program (e.g. test.py
). Now type M-x shell
to get a shell prompt. When you run your program, you'll be dumped into pdb
at the point where pdb.set_trace()
is executed.
Solution 2:
For me, I needed to replace the default "pdb" with
python -m pdb myscript.py
Solution 3:
The realgud
package (available from MELPA) supports PDB (among a gazillion other debuggers), and has a host of neat features that Emac's PDB doesn't have.
The one I like best is the shortkeys mode. Once you start debugging a program, you can press n
, s
, c
etc. right in the source window, instead of having to type these commands in the PDB buffer. It also supports Visual-Studio style keybindings with function keys (f10
, f11
, f5
, etc).
After installing RealGUD, you need to run M-x load-feature realgud
to load it, and you can start pdb
with M-x realgud:pdb
.