[英]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.