我发现有很多关于如何使用Emacs调试简单Python程序的信息。但是如果我想要调试一个Django应用程序怎么办? 我运行了开发服务器,并且希望可以从Emacs连接到该进程,然后设置断点等。就像Visual Studio的“附加到进程”功能一样。该如何实现呢?
这并不是专门针对emacs的技巧,但是您可以通过在Django视图函数中添加以下内容来使用Python调试器:
import pdb; pdb.set_trace()
现在当您运行开发服务器并查看页面时,您的浏览器将出现挂起或加载非常缓慢的情况 - 切换到控制台,您就可以访问完整的调试器了。 您可以通过交互式shell检查和修改应用程序的状态 - 查看Python文档以获取调试器信息,或单击此链接Python调试示例
如果您只需要记录日志,将以下内容添加到您的settings.py
:
logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s %(levelname)s %(message)s',
filename = '/tmp/mylog.log',
filemode = 'w'
)
现在您可以通过将以下内容添加到任何视图函数来将消息记录到/tmp/mylog.log
:
import logging
logging.debug("Something happened")
按以下方式启动pdb:
M-x pdb
然后,启动Django开发服务器:
python manage.py runserver --noreload
一旦你进入了(Pdb)提示符,你需要执行以下操作:
import sys
sys.path.append('/path/to/directory/containing/views.py')
一旦你完成了这个步骤,就可以正常地设置断点。只需导航到所需的行号,然后按下“C-x SPC”。然后你将在你的错误页面上拥有一个交互式AJAX控制台。 (显然,在这种模式下运行时,请注意人们对此Web服务器的访问权限。)python manage.py runserver_plus
如果你想从源代码安装它,请从 GitHub 上抓取 git 存储库并运行 setup.py:$ pip install django-extensions or $ easy_install django-extensions
$ git clone git://github.com/django-extensions/django-extensions.git
$ cd django-extensions
$ python setup.py install
因为最近版本的Emacs Python模式默认支持'pdbtrack'功能,所以你只需要按照以下方式在你的代码中设置断点:
import pdb; pdb.set_trace()
shell
然后,在shell中启动Django开发服务器:python ./manage.py runserver
顺便提一句,不需要特定的 pdb 会话或 --noreload 标志。使用 Noreload 会要求您手动重启应用程序,因此我认为这对于 Emacs 没有什么用处。