使用 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 递归,这对我帮助很大)。
脚注