从Emacs中的App Engine获取对`pdb`的控制权

时间:2013-12-05 06:54:01

标签: python google-app-engine emacs pdb

我有一个Python Google App Engine应用程序,我想在Emacs中的开发服务器上进行调试。我有一个我创建的pdb可执行文件,因此调试可以很好地与Emacs一起使用:

$ which pdb
/usr/bin/pdb
$ cat /usr/bin/pdb
#/bin/sh
exec python -m pdb "$@"

在Emacs中,我M-x pdb并提示Run pdb (like this):我输入pdb /usr/local/bin/dev_appserver.py /Users/[person]/path/to/app/directory

这很好地开始。我得到一个带有(Pdb)提示的窗口,我可以在代码的早期部分成功设置断点,就像某些dev_appserver.py文件一样,并使用n之类的命令一步一步地执行。然后我可以输入c继续执行程序。

问题是,只要app引擎打印出通常的启动INFO消息(发送到Pdb会话的同一缓冲区),我就不会得到(Pdb)提示符再次,所以我不能再输入任何pdb命令。这是我第一次使用pdb和我第一次在Emacs中调试时,所以也许我只是做了一些完全错误的事情。

1 个答案:

答案 0 :(得分:2)

@TimHoffman有一个很好的答案。开发服务器从各种实际服务器进程重新路由pdb,因此您无法从命令行启动pdb。

可能有效的替代方法是从没有pdb的emacs命令行启动dev服务器,并在代码中插入pdb断点

import pdb
pdb.set_trace()

我通常使用此调试,但不通过emacs调试。