Python 使用Emacs进行Django调试
我发现了很多关于如何使用Emacs调试简单Python程序的信息。但是如果我想调试Django应用程序呢?Python 使用Emacs进行Django调试,python,django,debugging,emacs,Python,Django,Debugging,Emacs,我发现了很多关于如何使用Emacs调试简单Python程序的信息。但是如果我想调试Django应用程序呢? 我运行开发服务器,希望以某种方式从Emacs附加到进程,然后设置断点等,类似于Visual Studio的“附加到进程”。如何做到这一点?我对它一无所知,但将“使用emacs调试Python”放到Google中让我看到了这一页,所以这似乎是可能的。这不是emacs特有的,但您可以通过向Django view函数添加以下内容来使用Python调试器: import logging loggi
我运行开发服务器,希望以某种方式从Emacs附加到进程,然后设置断点等,类似于Visual Studio的“附加到进程”。如何做到这一点?我对它一无所知,但将“使用emacs调试Python”放到Google中让我看到了这一页,所以这似乎是可能的。这不是emacs特有的,但您可以通过向Django view函数添加以下内容来使用Python调试器:
import logging
logging.debug("Something happened")
导入pdb;pdb.set_trace()
现在,当您运行开发服务器并查看页面时,您的浏览器将显示为挂起或加载非常缓慢-切换到控制台,您可以访问完整的调试器。您可以通过一个交互式shell检查和修改应用程序的状态—查看调试器的Python文档,或者查看一些相关链接
如果只需要记录日志,请将以下内容添加到
设置.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")
这是我昨晚发现的一个东西,当程序崩溃时,它将完全满足您的要求: 安装后,即可运行: python manage.py runserver\u plus 您将在
错误
页面上有一个交互式AJAX控制台
。(显然,在该模式下运行时,请注意用户对该web服务器的访问量。)
GitHub:
您可以使用pip或easy_安装获得Django扩展:
$pip安装django扩展或$easy_安装django扩展
如果要从源代码处安装,请从GitHub获取git存储库并运行setup.py:
$git克隆git://github.com/django-extensions/django-extensions.git$cd django扩展名
$python setup.py安装 按如下方式启动pdb: M-x
pdb
然后,启动Django开发服务器:
python manage.py runserver --noreload
python ./manage.py runserver
出现(Pdb)提示后,需要执行以下操作:
import sys
sys.path.append('/path/to/directory/containing/views.py')
完成此操作后,您应该能够正常设置断点。只需导航到所需的行号,然后
C-x SPC关于一般的非emacs独占方式,有一个非常好的屏幕,您可能会感兴趣: 上面描述的emacs集成对我来说还不起作用。它似乎并没有真正连接到正在运行的应用程序 另外,我认为这篇博文非常有趣: 特写
Roman因为Emacs python模式的最新版本默认支持“pdbtrack”功能,所以您只需在代码中设置断点即可:
import pdb; pdb.set_trace()
此外,还必须从Emacs shell中启动Django应用程序devserver:
M-xshell
然后,在shell中启动Django开发服务器:
python manage.py runserver --noreload
python ./manage.py runserver
注意:不需要特定的pdb会话或--noreload标志。Noreload将要求您手动重新启动应用程序,因此我认为这对Emacs没有用处。此外,如果您正在使用pdb和Emacs,请退出。