5

我似乎找不到任何有关调试 python web 应用程序的信息,特别是逐步执行 web 请求。

这是不可能的吗?如果没有,为什么不呢?

4

3 回答 3

11

如果你把

import pdb
pdb.set_trace()

在您的代码中,Web 应用程序将在执行时进入 pdb 调试器会话set_trace

同样有用的是

import code
code.interact(local=locals())

这会将您带到 python 解释器。按 Ctrl-d 恢复执行。

更有用的是

import IPython.Shell 
ipshell = IPython.Shell.IPShellEmbed()
ipshell(local_ns=locals())

这会让你进入一个 IPython 会话(假设你已经安装了 IPython)。在这里,按 Ctrl-d 也可以恢复执行。

于 2010-08-09T18:32:21.123 回答
3

如果您通过 apache 和mod_wsgimod_python运行您的 Web 应用程序,它们都为使用 pdb 进行单步调试提供了一些支持。诀窍是您必须使用 -X 标志在前台模式下运行 apache。

在我的 Gentoo 系统上,我这样做(这本质上与 apache init 脚本使用的相同命令将 -k start 替换为 -X):

/usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PYTHON -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -X
于 2010-08-09T18:47:09.710 回答
0

使用 Python 调试器,import pdb; pdb.set_trace()正是您想要开始调试的地方,您的终端将在该行暂停。更多信息在这里: http: //plone.org/documentation/kb/using-pdb

于 2010-08-09T18:33:04.993 回答