Pertanyaan Django debugging dengan Emacs


Saya menemukan banyak info tentang cara men-debug program Python sederhana dengan Emacs. Tetapi bagaimana jika saya ingin mendebug aplikasi Django? Saya menjalankan server pengembangan dan saya ingin melampirkan proses dari Emacs dan kemudian mengatur breakpoint, dll. Mirip dengan "attach to process" Visual Studio. Bagaimana cara melakukannya?


19
2017-11-12 08:15


asal


Jawaban:


Mulai pdb seperti ini:

M-x  pdb

Kemudian, mulai server pengembangan Django:

python manage.py runserver --noreload

Setelah Anda memiliki prompt (Pdb), Anda perlu melakukan ini:

import sys
sys.path.append('/path/to/directory/containing/views.py')

Setelah Anda melakukan ini, Anda harus dapat mengatur breakpoints secara normal. Cukup navigasi ke nomor baris yang Anda inginkan, dan

C-x  SPC


12
2017-11-03 07:33



Ini bukan emacs khusus, tetapi Anda dapat menggunakan debugger Python dengan menambahkan hal berikut ke fungsi tampilan Django:

import pdb; pdb.set_trace()

Sekarang ketika Anda menjalankan server pengembangan dan melihat halaman, browser Anda akan tampak menggantung atau memuat dengan sangat lambat - beralih ke konsol Anda, dan Anda memiliki akses ke debugger penuh. Anda dapat memeriksa DAN mengubah keadaan aplikasi Anda melalui shell interaktif - lihat dokumentasi Python untuk debugger, atau tautan ini untuk beberapa Contoh debugging Python


Jika semua yang Anda perlukan adalah pencatatan, tambahkan yang berikut ini ke Anda settings.py:

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(asctime)s %(levelname)s %(message)s',
    filename = '/tmp/mylog.log',
    filemode = 'w'
)

Sekarang Anda dapat mencatat pesan ke /tmp/mylog.log dengan menambahkan yang berikut ke fungsi tampilan apa pun:

import logging
logging.debug("Something happened")

17
2017-11-12 16:57



Inilah yang saya temukan tadi malam yang akan melakukan apa yang Anda inginkan ketika program macet:

http://code.google.com/p/django-command-extensions/

Setelah Anda menginstal, Anda dapat menjalankan:

python manage.py runserver_plus

dan Anda akan memiliki interaktif AJAX console pada Anda Error halaman. (Tentunya, berhati-hatilah dengan jumlah akses yang dimiliki orang-orang ke server web ini ketika berjalan dalam mode tersebut.)

GitHub: https://github.com/django-extensions/django-extensions

Anda bisa mendapatkan Django Extensions dengan menggunakan pip atau easy_install:

$ pip install django-extensions atau $ easy_install django-extensions

Jika Anda ingin menginstalnya dari sumber, ambil repositori git dari GitHub dan jalankan setup.py:

$ git clone git: //github.com/django-extensions/django-extensions.git
  $ cd django-extensions
  $ python setup.py install


3
2017-11-13 10:01



Karena versi terbaru dari mode python Emacs mendukung fungsi 'pdbtrack' secara default, yang Anda butuhkan hanyalah mengatur breakpoint dalam kode Anda seperti ini:

import pdb; pdb.set_trace()

Juga, Anda harus memulai devserver aplikasi Django Anda dari dalam shell Emacs:

M-x  shell

Dan kemudian, di shell, mulai server pengembangan Django:

python ./manage.py runserver

P.S. Tidak perlu untuk sesi pdb tertentu atau --noreload flag. Noreload akan mengharuskan Anda untuk me-restart aplikasi Anda secara manual dan jadi saya tidak menemukan ini berguna untuk Emacs.


1
2017-09-14 15:27



Saya benar-benar tidak tahu apa-apa tentang itu, tetapi menempatkan "debugging Python dengan emacs" ke Google memberi saya halaman ini tentang debugging terpelintir dengan emacs, jadi sepertinya mungkin.


0
2017-11-12 14:16



Tentang cara non-emacs-eksklusif umum, ada screencast yang sangat bagus di luar sana yang mungkin menarik bagi Anda: http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-debugging-series-/

Integrasi emacs yang dijelaskan di atas belum berhasil untuk saya. Sepertinya tidak terhubung ke aplikasi yang sedang berjalan.

Lebih lanjut saya menganggap posting blog ini di sini sangat menarik: http://web.archive.org/web/20101230072606/http://panela.blog-city.com/python_and_emacs_5_pdb_and_emacs.htm

cu Roma


0
2017-09-13 08:02