使用 Emacs 调试 Python(Twisted)¶
打开您的项目文件。有时,如果您事先没有打开它们,Emacs 可能无法找到它们。
确保您的 PATH 中有一个名为
pdb
的程序,其内容如下#!/bin/sh exec python -m pdb $1 $2 $3 $4 $5 $6 $7 $8 $9
在 Emacs 中运行
M-x pdb
。如果您通常以python foo.py
的方式运行程序,您的命令行应该是pdb foo.py
,对于twistd
和trial
,只需在命令行中添加 -b,例如:twistd -b -y my.tac
当 pdb 等待您的输入时,转到代码中的某个位置,然后按
C-x SPC
插入断点。pdb 应该会显示一些提示信息。您可以在需要的地方设置多个断点。转到您的 pdb 缓冲区,然后按
c
;这将像往常一样运行,直到找到断点。到达断点后,使用
s
进行单步执行,n
运行当前行而不单步执行它调用的函数,w
打印当前堆栈,u
和d
在堆栈中上移和下移一层,p foo
打印表达式foo
的结果。有效调试的建议
经常使用
p self
;仅仅知道当前代码所在的类在大多数情况下是不够的。使用
w
来确定您的位置,它将重新显示当前行/箭头。在使用
w
之后,使用u
和d
以及更多p self
在不同的堆栈级别上。如果您需要理解一个大型代码路径,请打开另一个缓冲区并在其中列出代码路径(例如,我遇到过一个非常糟糕的 Deferred 递归,这对我帮助很大)。
脚注