簡體   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