繁体   English   中英

用Emacs调试Django

[英]Django debugging with Emacs

我发现了很多关于如何使用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:

Mx pdb

然后,启动Django开发服务器:

python manage.py runserver --noreload

有了(Pdb)提示后,您需要这样做:

import sys
sys.path.append('/path/to/directory/containing/views.py')

完成此操作后,您应该能够正常设置断点。 只需导航到您想要的行号,然后

Cx SPC

这是我昨晚发现的一些东西,它会在程序崩溃时完全符合你的要求:

http://code.google.com/p/django-command-extensions/

安装后,您可以运行:

python manage.py runserver_plus

您将在Error页面上拥有一个交互式AJAX console (显然,在该模式下运行时,请注意人们对此Web服务器的访问量。)

GitHub: https//github.com/django-extensions/django-extensions

您可以使用pip或easy_install获取Django Extensions:

$ pip install django-extensions或$ easy_install django-extensions

如果要从源代码安装它,请从GitHub获取git存储库并运行setup.py:

$ git clone git://github.com/django-extensions/django-extensions.git
$ cd django-extensions
$ python setup.py安装

因为最新版本的Emacs python模式默认支持'pdbtrack'功能,所以你只需要在代码中设置断点:

import pdb; pdb.set_trace()

此外,您必须从Emacs shell中启动Django应用程序devserver:

Mx shell

然后,在shell中,启动Django开发服务器:

python ./manage.py runserver

PS无需特定的pdb会话或--noreload标志。 Noreload会要求您手动重启应用程序,因此我发现这对Emacs没有用。

我对此一无所知,但是将“使用emacs调试Python”放到Google中给了我这个关于使用emacs进行调试的页面,所以它似乎是可能的。

关于一般非emacs独有的方式,有一个非常好的截屏你可能感兴趣: http//ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-调试-串联/

上面描述的emacs集成对我来说还不适用。 它似乎并没有真正连接到正在运行的应用程序。

此外,我认为此博客文章非常有趣: http//web.archive.org/web/20101230072606/http : //panela.blog-city.com/python_and_emacs_5_pdb_and_emacs.htm

罗马

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM