Вопрос по python, debugging, django – Как отладить в Django, хороший способ? [закрыто]

522

Итак, я начал учиться кодировать впитон и позжеДжанго, В первый раз было трудно смотреть на трассировки и на самом деле понять, что я сделал неправильно и где была синтаксическая ошибка. Прошло немного времени, и некоторое время спустя, я думаю, у меня появилась процедура отладки моего кода Django. Так как это было сделано на ранних этапах моего опыта программирования, я сел и подумал, не было ли это как-то неэффективно и могло ли быть сделано быстрее. Мне обычно удается находить и исправлять ошибки в моем коде, но мне интересно, должен ли я делать это быстрее?

Я обычно просто использую отладочную информацию, которую Django дает, когда она включена. Когда все заканчивается так, как я думал, я сильно нарушаю поток кода из-за синтаксической ошибки и смотрю на переменные в этой точке потока, чтобы выяснить, где код делает что-то отличное от того, что я хотел.

Но можно ли это улучшить? Существуют ли хорошие инструменты или лучшие способы отладки кода Django?

мне нравится использовать django-debug-toolbar, он очень удобен Diego Vinícius
Или используйте код Visual Studio, встроенный в отладчик Python, как описано здесьcode.visualstudio.com/docs/python/tutorial-django Nick T

Ваш Ответ

27   ответов
0

use ipdb,which is a enhanced debugger likes pdb.

import ipdb;ipdb.set_trace()

use django shell ,just use the command below. This is very helpfull when you are developing a new view.

python manage.py shell

0

Вы можете использоватьnosetests а такжеpdb вместе скорее впрыскиваяpdb.set_trace() в ваших взглядах вручную. Преимущество заключается в том, что вы можете наблюдать ошибки при их первом запуске, возможно, в стороннем коде.

Вот ошибка для меня сегодня.

TypeError at /db/hcm91dmo/catalog/records/

render_option() argument after * must be a sequence, not int

....


Error during template rendering

In template /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/crispy_forms/templates/bootstrap3/field.html, error at line 28
render_option() argument after * must be a sequence, not int
18  
19          {% if field|is_checkboxselectmultiple %}
20              {% include 'bootstrap3/layout/checkboxselectmultiple.html' %}
21          {% endif %}
22  
23          {% if field|is_radioselect %}
24              {% include 'bootstrap3/layout/radioselect.html' %}
25          {% endif %}
26  
27          {% if not field|is_checkboxselectmultiple and not field|is_radioselect %}
28  

      {% if field|is_checkbox and form_show_labels %}

Теперь я знаю, что это означает, что я обманываю конструктор для формы, и у меня даже есть хорошее представление о том, какое поле является проблемой. Но могу ли я использовать pdb, чтобы увидеть, на что жалуются хрустящие формы,within a template?

Да, я могу. С использованием--pdb вариант на носу:

tests$ nosetests test_urls_catalog.py --pdb

Как только я нажимаю на любое исключение (в том числе обработанное изящно), pdb останавливается там, где это происходит, и я могу осмотреться.

  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/forms.py", line 537, in __str__
    return self.as_widget()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/forms.py", line 593, in as_widget
    return force_text(widget.render(name, self.value(), attrs=attrs))
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/widgets.py", line 513, in render
    options = self.render_options(choices, [value])
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/widgets.py", line 543, in render_options
    output.append(self.render_option(selected_choices, *option))
TypeError: render_option() argument after * must be a sequence, not int
INFO lib.capture_middleware log write_to_index(http://localhost:8082/db/hcm91dmo/catalog/records.html)
INFO lib.capture_middleware log write_to_index:end
> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/widgets.py(543)render_options()
-> output.append(self.render_option(selected_choices, *option))
(Pdb) import pprint
(Pdb) pprint.PrettyPrinter(indent=4).pprint(self)
<django.forms.widgets.Select object at 0x115fe7d10>
(Pdb) pprint.PrettyPrinter(indent=4).pprint(vars(self))
{   'attrs': {   'class': 'select form-control'},
    'choices': [[('_', 'any type'), (7, (7, 'type 7', 'RECTYPE_TABLE'))]],
    'is_required': False}
(Pdb)         

Теперь ясно, что мой аргумент выбора для хрустящего конструктора поля был как список в списке, а не как список / кортеж кортежей.

 'choices': [[('_', 'any type'), (7, (7, 'type 7', 'RECTYPE_TABLE'))]]

Важно то, что этот pdb находится внутри хрустящего кода, а не моего, и мне не нужно было вставлять его вручную.

2

Чтобы напечатать контекст шаблона, я создал для этого простую библиотеку. Увидетьhttps://github.com/edoburu/django-debugtools

Вы можете использовать его для печати контекста шаблона без каких-либо{% load %} построить:

{% print var %}   prints variable
{% print %}       prints all

Он использует настраиваемый формат pprint для отображения переменных в<pre> тег.

3

https://github.com/Kozea/wdb

wdb works with python 2 (2.6, 2.7), python 3 (3.2, 3.3, 3.4, 3.5) and pypy. Even better, it is possible to debug a python 2 program with a wdb server running on python 3 and vice-versa or debug a program running on a computer with a debugging server running on another computer inside a web page on a third computer! Even betterer, it is now possible to pause a currently running python process/thread using code injection from the web interface. (This requires gdb and ptrace enabled) In other words it's a very enhanced version of pdb directly in your browser with nice features.

Установите и запустите сервер, и в своем коде добавьте:

import wdb
wdb.set_trace()

По мнению автора, основные различия в отношенииpdb являются:

For those who don’t know the project, wdb is a python debugger like pdb, but with a slick web front-end and a lot of additional features, such as:

Source syntax highlighting Visual breakpoints Interactive code completion using jedi Persistent breakpoints Deep objects inspection using mouse Multithreading / Multiprocessing support Remote debugging Watch expressions In debugger code edition Popular web servers integration to break on error In exception breaking during trace (not post-mortem) in contrary to the werkzeug debugger for instance Breaking in currently running programs through code injection (on supported systems)

У него отличный браузерный пользовательский интерфейс. Радость в использовании! :)

В чем разница с pdb?
0

pdb или жеipdb, Разница между этими двумя аспектами заключается в том, что ipdb поддерживает автозаполнение.

для PDB

import pdb
pdb.set_trace()

для ipdb

import ipdb
ipdb.set_trace()

Для выполнения удара новой строкиn ключ для продолжения удараc ключ. проверить больше вариантов с помощьюhelp(pdb)

485

использоватьPython отладчик, Просто добавьте следующую строку в функцию просмотра Django:

import pdb; pdb.set_trace()

Если вы попытаетесь загрузить эту страницу в своем браузере, браузер зависнет, и вы получите приглашение продолжить отладку в реальном исполняемом коде.

Однако есть и другие варианты (я их не рекомендую):

* return HttpResponse({variable to inspect})

* print {variable to inspect}

* raise Exception({variable to inspect})

Но отладчик Python (pdb) настоятельно рекомендуется для всех типов кода Python. Если вы уже знакомы с pdb, вы также хотели бы взглянуть наIPDB который используетipython для отладки.

Еще одно полезное расширение для pdb

pdb++, предложеноAntash.

pudb, предложеноPatDuJour.

Using the Python debugger in Django, предложеноSeafangs.

@ Даниил, посмотриrconsole за наличие консоли в уже запущенном экземпляре python.
Проверять, выписыватьсяipython также.Ipdb, который идет сipython, дополнение к вкладке, цветной синтаксис и многое другое :-).
Я нашел ваш ответ полезным, но Django навсегда зависал на моих контрольных точках, когда я пытался отладить тест. Поэтому я посмотрел и нашел информативную статью, которая помогла мне:v3.mike.tig.as/blog/2010/09/14/pdb
Смотрите такжеdjango-pdb согласно моему ответу ниже. Дает тебеmanage.py runserver --pdb а такжеmanage.py test --pdb команды.
+1 за предложение pdb. Однако стоит отметить, что это действительно работает только при использовании сервера разработки на локальном компьютере, так как приглашение появится в консоли.
3

PyCharm и разные инструменты отладки. Также есть хорошие статьи о том, как легко настроить эти вещи для новичков.Вы можете начать здесь. Он рассказывает об отладке PDB и GUI в целом с проектами Django. Надеюсь, что кто-то извлечет из них пользу.

20

которые привыкли к Visual Studio - это использование PTVS (Python Tools for Visual Studio). Шаги просты:

Download and install it from http://pytools.codeplex.com/ Set breakpoints and press F5. Your breakpoint is hit, you can view/change the variables as easy as debugging C#/C++ programs. That's all :)

Если вы хотите отлаживать Django с помощью PTVS, вам нужно сделать следующее:

In Project settings - General tab, set "Startup File" to "manage.py", the entry point of the Django program. In Project settings - Debug tab, set "Script Arguments" to "runserver --noreload". The key point is the "--noreload" here. If you don't set it, your breakpoints won't be hit. Enjoy it.
Спасибо, это отлично сработало. --Noreload был тем, что нам было нужно
У меня проблемы с этим. Я следовал твоим шагам, но все равно не работает. Он останавливается только в точках останова файлов * .py, а не в * .html.
Есть ли функция для отладки на удаленном сервере - похожая на Eclipse PyDev, которую я использую в данный момент?
2

что Visual Studio Code отлично подходит для отладки приложений Django. Стандартные параметры python launch.json запускаютсяpython manage.py с подключенным отладчиком, так что вы можете устанавливать точки останова и шагать по своему коду по своему усмотрению.

0

Во время разработки добавление быстрого

assert False, value

может помочь диагностировать проблемы в представлениях или где-либо еще, без необходимости использовать отладчик.

1

import pdb
pdb.set_trace()

Вы можете проверить все значения переменных, перейти к функции и многое другое. https://docs.python.org/2/library/pdb.html

для проверки всех видов запросов, ответов и обращений к базе данных. Я использую django-debug-toolbar https://github.com/django-debug-toolbar/django-debug-toolbar

8

когда я хочу изучить конкретный метод и вызывать pdb просто слишком громоздко, я бы добавил:

import IPython; IPython.embed()

IPython.embed() запускает оболочку IPython, которая имеет доступ к локальным переменным с того места, где вы ее вызываете.

9

code debugging задачи в трех различных шаблонах использования:

Something has raised an exception: runserver_plus' Werkzeug debugger to the rescue. The ability to run custom code at all the trace levels is a killer. And if you're completely stuck, you can create a Gist to share with just a click. Page is rendered, but the result is wrong: again, Werkzeug rocks. To make a breakpoint in code, just type assert False in the place you want to stop at. Code works wrong, but the quick look doesn't help. Most probably, an algorithmic problem. Sigh. Then I usually fire up a console debugger PuDB: import pudb; pudb.set_trace(). The main advantage over [i]pdb is that PuDB (while looking as you're in 80's) makes setting custom watch expressions a breeze. And debugging a bunch of nested loops is much simpler with a GUI.

Ах да, шаблоны & apos; Беды. Наиболее распространенная (для меня и моих коллег) проблема - это неправильный контекст: либо у вас нет переменной, либо у вашей переменной нет какого-либо атрибута. Если вы используетепанель инструментов отладкипросто проверьте контекст в разделе «Шаблоны». раздел, или, если этого недостаточно, установите перерыв в ваших представлениях ». код только после того, как ваш контекст заполнен.

Такие вот дела.

введите меньше, используя простоimport pudb;pu.db
2

http://www.youtube.com/watch?v=qQh-UQFltJQ

Если нет, подумайте об использовании.

2

кто может случайно добавить pdb в живые коммиты, я могу предложить следующее расширение ответа #Koobz:

@register.filter 
def pdb(element):
    from django.conf import settings
    if settings.DEBUG:    
        import pdb
        pdb.set_trace()
    return element
1

здесь - установка точек останова в вашем коде и просмотр кода, чтобы увидеть, ведет ли он себя так, как вы ожидали, - отличный способ изучить что-то вроде Django, пока вы не поймете, как все это ведет себя, и каков ваш код делается.

Для этого я бы рекомендовал использовать WingIde. Как и в других упомянутых средах IDE: приятный и простой в использовании, приятный макет, а также легко устанавливаемые точки останова для оценки / изменения стека и т. Д. Идеально подходит для визуализации того, что делает ваш код, когда вы проходите через него. Я большой поклонник этого.

Также я использую PyCharm - он имеет отличный статический анализ кода и может помочь иногда обнаружить проблемы, прежде чем вы поймете, что они есть.

Как уже упоминалось, django-debug-toolbar имеет важное значение -https://github.com/django-debug-toolbar/django-debug-toolbar

И хотя это явно не инструмент отладки или анализа - один из моих любимыхSQL Printing Middleware доступны от Джанго Сниппетс вhttps://djangosnippets.org/snippets/290/

Это отобразит запросы SQL, сгенерированные вашим представлением. Это даст вам хорошее представление о том, что делает ORM, и если ваши запросы эффективны или вам нужно переделать код (или добавить кеширование).

Я считаю его бесценным для отслеживания производительности запросов при разработке и отладке моего приложения.

Еще один совет - я немного изменил его для собственного использования, чтобы показывать только сводку, а не оператор SQL .... Поэтому я всегда использую его при разработке и тестировании. Я также добавил, что если len (connection.queries) больше, чем предопределенный порог, отображается дополнительное предупреждение.

Затем, если я улавливаю что-то плохое (с точки зрения производительности или количества запросов), я возвращаюсь к полному отображению операторов SQL, чтобы точно увидеть, что происходит. Очень удобно, когда вы работаете над большим проектом Django с несколькими разработчиками.

10

PyCharm и поддерживать его до конца. Это стоило мне немного, но я должен сказать, что преимущество, которое я получаю от этого, бесценно. Я попробовал отладку с консоли, и я очень благодарен людям, которые могут это сделать, но для меня возможность визуальной отладки моих приложений - это здорово.

Я должен сказать, хотя,PyCharm действительно занимает много памяти. Но опять же, ничего хорошего в жизни не бывает бесплатным. Они только что вышли со своей последней версией 3. Она также очень хорошо работает с Django, Flask и Google AppEngine. Итак, в общем, я бы сказал, что это отличный удобный инструмент для любого разработчика.

Если вы еще не используете его, я рекомендую получить пробную версию на 30 дней, чтобы взглянуть на возможности PyCharm. Я уверен, что есть и другие инструменты, такие как Aptana. Но я думаю, мне просто нравится, как выглядит PyCharm. Я чувствую себя очень комфортно, отлаживая свои приложения там.

Это может быть первая IDE, которую я когда-либо куплю. Отладка проекта в виртуальной машине звучит как волшебство, за которое стоит заплатить.
2

import pdb; pdb.set_trace() на соответствующей строке в коде Python и выполните его. Выполнение остановится с помощью интерактивной оболочки. В оболочке вы можете выполнить код Python (например, переменные печати) или использовать такие команды, как:

c continue execution n step to the next line within the same function s step to the next line in this function or a called function q quit the debugger/execution

Также см:https://poweruser.blog/setting-a-breakpoint-in-python-438e23fe6b28

6

http://www.rkblog.rk.edu.pl/w/p/debugging-python-code-browser-wdb-debugger/?goback=%2Egde_25827_member_255996401). У этого есть довольно хороший пользовательский интерфейс / GUI со всеми прибамбасами. Автор говорит это о WDB -

& quot; Есть такие IDE, как PyCharm, которые имеют свои собственные отладчики. Они предлагают одинаковый или равный набор функций ... Однако для их использования необходимо использовать эти конкретные IDE (а некоторые из них являются платными или могут быть недоступны для всех платформ). Выберите подходящий инструмент для ваших нужд. & Quot;

Думаю, я просто передам это.

Also a very helpful article about python debuggers: https://zapier.com/engineering/debugging-python-boss/

FinallyЕсли вы хотите увидеть красивую графическую распечатку вашего стека вызовов в Django, проверьте: https://github.com/joerick/pyinstrument, Просто добавьте pyinstrument.middleware.ProfilerMiddleware в MIDDLEWARE_CLASSES, затем добавьте? Profile в конец URL-адреса запроса, чтобы активировать профилировщик.

Можно также запустить pyinstrument из командной строки или путем импорта в качестве модуля.

Я думаю, что PyCharm использует PyDev, а не свой собственный.
219

Werkzeugинтерактивный отладчик. Она похожа на страницу отладки Django, за исключением того, что вы получаете интерактивную оболочку на каждом уровне трассировки. Если вы используетеДжанго-расширения, вы получитеrunserver_plus команда managment, которая запускает сервер разработки и предоставляет вам отладчик Werkzeug для исключений.

Конечно, вы должны запускать это только локально, так как это дает любому, у кого есть браузер, права на выполнение произвольного кода Python в контексте сервера.

Лучший ответ на данный момент! Как бы хороша ни была панель инструментов отладки django, отладчик werkzeug превосходит ее :) И самое худшее во всем этом - я использую расширения django уже около полугода и раньше не знал о runserver_plus ...
@ Ариэль отладчик werkzeug не имеет завершения табуляции.
Если вы отлаживаете API, вы можете попробоватьdjango-rundbg это добавляет небольшой поворот в отладчик Werkzeug.
Это не позволяет вам шагать по коду, который является большой частью отладки.
Можно ли использовать завершение табуляции в интерактивной консоли, показанной в браузере? & Quot; вкладка & Quot; просто переносит нас к следующей открытой консоли, мне было интересно, была ли комбинация клавиш, но я не смог ее найти.
156

@register.filter 
def pdb(element):
    import pdb; pdb.set_trace()
    return element

Теперь внутри шаблона вы можете сделать{{ template_var|pdb }} и введите сеанс pdb (если вы запускаете локальный сервер devel), где вы можете проверитьelement к вашему сердцу.

Это очень хороший способ увидеть, что случилось с вашим объектом, когда он прибыл в шаблон.

Это прекрасно. К сожалению, трудно найти чистый способ интегрировать это в кодовую базу, которая отказывается от любого коммита, включая импорт pdb.
это замечательно. Еще одна вещь, которую вы можете сделать, если у вас возникли проблемы с шаблонами, это переключиться на jinja2 (загруженный через coffin) - это расширение шаблонов django, что, на мой взгляд, является улучшением. Он также интегрирует шаблоны & amp; наследование шаблонов в кадрах трассировки намного лучше, чем у django.
80

которые хорошо взаимодействуют и могут облегчить вашу задачу отладки.

Наиболее важным являетсяПанель отладки Django.

Тогда вам нужна хорошая регистрация с использованием Pythonпротоколирование объект. Вы можете отправить вывод журнала в файл журнала, но более простой способ - отправить вывод журнала вFirePython, Чтобы использовать это, вы должны использовать браузер Firefox споджигатель расширение. Firepython включает в себя плагин Firebug, который будет отображать все журналы на стороне сервера на вкладке Firebug.

Сам Firebug также важен для отладки Javascript стороны любого приложения, которое вы разрабатываете. (Конечно, если у вас есть JS-код).

Мне также понравилосьДжанго-viewtools для интерактивной отладки представлений с использованием pdb, но я не использую его так часто.

Существуют более полезные инструменты, такие как бульдозер, для отслеживания утечек памяти (есть также другие полезные предложения, приведенные в ответах на SO для отслеживания памяти).

41

поэтому я только добавлю это вместоpdb.set_trace() можно использоватьipdb.set_trace() который использует iPython и, следовательно, более мощный (автозаполнение и другие вкусности). Для этого требуется пакет ipdb, так что вам нужно толькоpip install ipdb

Я рекомендую pdb ++, который обеспечивает очень полезный режим закрепления.
32

Я нажалdjango-pdb вPyPI. It's a simple app that means you don't need to edit your source code every time you want to break into pdb.

Установка просто ...

pip install django-pdb Add 'django_pdb' to your INSTALLED_APPS

Теперь вы можете запустить:manage.py runserver --pdb разбить на pdb в начале каждого просмотра ...

bash: manage.py runserver --pdb
Validating models...

0 errors found
Django version 1.3, using settings 'testproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

GET /
function "myview" in testapp/views.py:6
args: ()
kwargs: {}

> /Users/tom/github/django-pdb/testproject/testapp/views.py(7)myview()
-> a = 1
(Pdb)

И запустить:manage.py test --pdb взломать pdb на тестовые сбои / ошибки ...

bash: manage.py test testapp --pdb
Creating test database for alias 'default'...
E
======================================================================
>>> test_error (testapp.tests.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../django-pdb/testproject/testapp/tests.py", line 16, in test_error
    one_plus_one = four
NameError: global name 'four' is not defined
======================================================================

> /Users/tom/github/django-pdb/testproject/testapp/tests.py(16)test_error()
-> one_plus_one = four
(Pdb)

Проект размещен наGitHub, взносы приветствуются, конечно.

На что я мог бы оставить в коде подобные комментарии, которые инертны в процессе производства. Возможно, это плохой парадокс, но было бы здорово эффективно раздеть и нанести разрывы.
Я установил это недавно, но только сегодня разобрался с настройкой & quot; POST_MORTEM = True & quot; в моих настройках разработчика, как задокументировано Томом django-pdb. Теперь я могу просто путешествовать и, когда дела пойдут плохо, я упаду прямо к месту возникновения проблемы. Спасибо, Том!
Это было бы здорово, если бы вы могли указать номер файла / строки для разбивки (не только вид).
15

Pydev с Eclipse действительно хорошо, установите точки останова, войдите в код, просмотрите значения любых объектов и переменных, попробуйте.

Удаленный отладчик PyDev прекрасно работает с сервером разработки Django. Просто убедитесь, что у вас есть & quot; Когда файл изменяется, автоматически перезагрузите модуль? & Quot; опция '' отключена '' в настройках запуска / отладки PyDev. В противном случае сервер dev и pydev попытаются перезагрузить код во время отладки, что приводит их в замешательство.
Вы должны запустить dev-сервер через eclipse (для облегчения отладки). PyDev утверждает, что имеет удаленную отладку, но никогда не использовал ее, я не могу говорить о качестве опыта разработки. Подробности:pydev.org/manual_adv_remote_debugger.html
54

PyCharm (тот же двигатель пидев, что и затмение). Действительно помогает мне визуально пройти по моему коду и посмотреть, что происходит.

Лучшая вещь об этом - это просто работает и является полностью интуитивным. Просто нажмите слева от строки и нажмите кнопку отладки. Это хорошо работает и для исходного кода Django, если вы хотите лучше понять, как работает внутренний код. Мне потребовалось некоторое время, прежде чем я заметил это, но вы можете поместить точки останова в любой код в папке внешних библиотек файлового навигатора.
Стоит отметить, что PyCharm использует отладчик PyDev под капотом для кредитов.
6

https://bitbucket.org/dugan/epdb

Одна вещь, которая мне нравится в epdb для отладки Django или других веб-серверов Python, - это команда epdb.serve (). Это устанавливает трассировку и передает ее на локальный порт, к которому вы можете подключиться. Типичный вариант использования:

У меня есть мнение, что я хочу пройти через шаг за шагом. Я добавлю следующее в то место, где я хочу установить трассировку.

import epdb; epdb.serve()

После выполнения этого кода я открываю интерпретатор Python и подключаюсь к обслуживающему экземпляру. Я могу проанализировать все значения и пройтись по коду, используя стандартные команды pdb, такие как n, s и т. Д.

In [2]: import epdb; epdb.connect()
(Epdb) request
<WSGIRequest
path:/foo,
GET:<QueryDict: {}>, 
POST:<QuestDict: {}>,
...
>
(Epdb) request.session.session_key
'i31kq7lljj3up5v7hbw9cff0rga2vlq5'
(Epdb) list
 85         raise some_error.CustomError()
 86 
 87     # Example login view
 88     def login(request, username, password):
 89         import epdb; epdb.serve()
 90  ->     return my_login_method(username, password)
 91
 92     # Example view to show session key
 93     def get_session_key(request):
 94         return request.session.session_key
 95

И многое другое, что вы можете узнать о наборе справки epdb в любое время.

Если вы хотите обслуживать или подключаться к нескольким экземплярам epdb одновременно, вы можете указать порт для прослушивания (по умолчанию 8080). То есть

import epdb; epdb.serve(4242)

>> import epdb; epdb.connect(host='192.168.3.2', port=4242)

хост по умолчанию принимает значение "localhost" если не указано Я добавил это здесь, чтобы продемонстрировать, как вы можете использовать это для отладки чего-либо, кроме локального экземпляра, например сервера разработки в вашей локальной сети. Очевидно, что если вы сделаете это, будьте осторожны, так как заданная трассировка никогда не попадет на ваш рабочий сервер!

В качестве быстрой заметки, вы все равно можете сделать то же самое, что и принятый ответ с помощью epdb (import epdb; epdb.set_trace()), но я хотел бы подчеркнуть функциональность подачи, поскольку я нашел ее очень полезной.

epdb не обновляется с 2011 года. Вы когда-нибудь сталкивались с проблемами при использовании его в более новых версиях Django и / или Python?
Я никогда не сталкивался с проблемами при использовании его против Python 2 (в частности, 2.4-2.7). Я использовал это всего несколько дней назад, на самом деле. Я никогда не пробовал с Python 3.
Я запускаю django 1.8 на python 2.7, и я не могу получить epdb.connect для общения с epdb.serve. Я просто получаю тайм-аут.

Похожие вопросы