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