- 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 python2.3 /usr/lib/python2.3/pdb.py $1 $2 $3 $4 $5 $6 $7 $8 $9
- Run
M-x pdb
in emacs. If you usually run your program aspython foo.py
, your command line should bepdb foo.py
, fortwistd
andtrial
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
andd
to go up and down a level in the stack,p foo
to print result of expressionfoo
. - 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
, useu
andd
and lots morep 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)
- use