用Emacs调试Django

ibz*_*ibz 21 python django debugging emacs

我发现了很多关于如何使用Emacs调试简单Python程序的信息.但是,如果我想调试Django应用程序怎么办?我运行开发服务器,我想以某种方式从Emacs附加到进程,然后设置断点等.类似于Visual Studio的"附加到进程".怎么做?

小智 17

这不是特定于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'
)
Run Code Online (Sandbox Code Playgroud)

现在,您可以/tmp/mylog.log通过将以下内容添加到任何视图功能来记录消息:

import logging
logging.debug("Something happened")
Run Code Online (Sandbox Code Playgroud)


Mat*_*ert 12

像这样启动pdb:

M-x pdb

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

python manage.py runserver --noreload
Run Code Online (Sandbox Code Playgroud)

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

import sys
sys.path.append('/path/to/directory/containing/views.py')
Run Code Online (Sandbox Code Playgroud)

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

C-x SPC