我有一个 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
继续执行程序。
问题是,一旦应用程序引擎打印出其通常的启动 INFO
消息(到 Pdb session 发生的同一缓冲区),我就不会得到 ( Pdb)
再次提示,因此我无法再输入任何 pdb
命令。这是我第一次使用 pdb
也是我第一次在 Emacs 中调试,所以也许我只是做了一些明显错误的事情。
最佳答案
@TimHoffman 有一个很好的答案。开发服务器从各种实际服务器进程重新路由 pdb,因此您将无法从命令行启动 pdb。
另一种可行的方法是从 emacs 命令行启动开发服务器(不使用 pdb),并在代码中插入 pdb 断点
import pdb
pdb.set_trace()
我通常用它来调试,但不是通过 emacs。
关于python - 在 Emacs 中从 App Engine 取回 `pdb` 的控制权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393387/