Open up your project files. sometimes emacs can’t find them if you don’t have them open before-hand.
Make sure you have a program called pdb
somewhere
in your PATH, with the following contents:
#!/bin/sh
exec python -m pdb $1 $2 $3 $4 $5 $6 $7 $8 $9
Run M-x pdb
in emacs. If you usually run your
program as python foo.py
, your command line should be pdb foo.py
, for twistd
and trial
just
add -b to the command line, e.g.: twistd -b -y my.tac
While pdb waits for your input, go to a place in your code and hit
C-x SPC
to insert a break-point. pdb should say something happy.
Do this in as many points as you wish.
Go to your pdb buffer and hit c
; this runs as normal until a
break-point is found.
Once you get to a breakpoint, use s
to step, n
to run the
current line without stepping through the functions it calls, w
to print out the current stack, u
and d
to go up and down a
level in the stack, p foo
to print result of expression foo
.
Recommendations for effective debugging:
use p self
a lot; just knowing the class where the current code
is isn’t enough most of the time.
use w
to get your bearings, it’ll re-display the current-line/arrow
after you use w
, use u
and d
and lots more p self
on the
different stack-levels.
If you’ve got a big code-path that you need to grok, keep another buffer open and list the code-path there (e.g., I had a nasty-evil Deferred recursion, and this helped me tons)
Footnotes